Scrapy Newbie Question - не получается получить учебный файл - PullRequest
3 голосов
/ 17 декабря 2010

Я - новичок в Python и Scrapy, поэтому я начал с того, что попытался повторить учебник. Я пытаюсь почистить сайт www.dmoz.org в соответствии с руководством.

Я составляю dmoz_spider.py, как указано ниже

from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector

from dmoz.items import DmozItem

class DmozSpider(BaseSpider):
   name = "dmoz.org"
   allowed_domains = ["dmoz.org"]
   start_urls = [
       "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
       "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
   ]

   def parse(self, response):
       hxs = HtmlXPathSelector(response)
       sites = hxs.select('//ul/li')
       items = []
       for site in sites:
           item = DmozItem()
           item['title'] = site.select('a/text()').extract()
           item['link'] = site.select('a/@href').extract()
           item['desc'] = site.select('text()').extract()
           items.append(item)
       return items

и то, что я должен получить через веб-сайт, это что-то другое.
Есть идеи, что я облажался?

Ответы [ 3 ]

7 голосов
/ 30 августа 2012

У меня была эта проблема. Убедитесь, что вы внесли следующие изменения, как указано в руководстве.

Откройте items.py и посмотрите, изменился ли класс

class TutorialItem(Item):
    title=Field()
    link=Field()
    desc=Field()

в

class DmozItem(Item):
    title=Field()
    link=Field()
    desc=Field()
1 голос
/ 24 декабря 2010

Нет ничего плохого в вставленном вами коде.Проблема должна быть в другом месте, можете ли вы вставить весь полученный результат?(ваш комментарий останавливается там, где начинается интересная часть ...)

0 голосов
/ 03 сентября 2013

Вам нужно перейти в каталог, содержащий файл settings.py, и запустить оттуда

scrapy crawl dmoz.

Следуйте структуре вашего проекта против https://github.com/scrapy/dirbot дляясность

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...