Scrapy Spider не работает - PullRequest
       15

Scrapy Spider не работает

0 голосов
/ 27 ноября 2009

Поскольку пока ничего не работает, я начал новый проект с

python scrapy-ctl.py startproject Nu

Я точно следовал учебному пособию, создал папки и новый паук

from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import HtmlXPathSelector
from scrapy.item import Item
from Nu.items import NuItem
from urls import u

class NuSpider(CrawlSpider):
    domain_name = "wcase"
    start_urls = ['http://www.whitecase.com/aabbas/']

    names = hxs.select('//td[@class="altRow"][1]/a/@href').re('/.a\w+')

    u = names.pop()

    rules = (Rule(SgmlLinkExtractor(allow=(u, )), callback='parse_item'),)

    def parse(self, response):
        self.log('Hi, this is an item page! %s' % response.url)

        hxs = HtmlXPathSelector(response)
        item = Item()
        item['school'] = hxs.select('//td[@class="mainColumnTDa"]').re('(?<=(JD,\s))(.*?)(\d+)')
        return item

SPIDER = NuSpider()

и когда я бегу

C:\Python26\Scripts\Nu>python scrapy-ctl.py crawl wcase

Я получаю

[Nu] ERROR: Could not find spider for domain: wcase

Другие пауки, по крайней мере, признаны Скрапи, а этот - нет. Что я делаю не так?

Спасибо за вашу помощь!

Ответы [ 5 ]

6 голосов
/ 27 декабря 2010

Пожалуйста, проверьте версию scrapy. В последней версии атрибут «имя» вместо атрибута «имя_домена» используется для уникальной идентификации паука

3 голосов
/ 18 июля 2010

Эти две строки выглядят так, как будто они вызывают проблемы:

u = names.pop()

rules = (Rule(SgmlLinkExtractor(allow=(u, )), callback='parse_item'),)
  • При каждом запуске скрипта будет соблюдаться только одно правило. Попробуйте создать правило для каждого URL.
  • Вы не создали обратный вызов parse_item, что означает, что правило ничего не делает. Единственный определенный вами обратный вызов - parse, который изменяет поведение паука по умолчанию.

Кроме того, вот некоторые вещи, которые стоит рассмотреть.

  • CrawlSpider не нравится перегруженный метод по умолчанию parse. Ищите parse_start_url в документации или документах. Вы увидите, что это предпочтительный способ переопределить метод parse по умолчанию для ваших начальных URL.
  • NuSpider.hxs вызывается до его определения.
2 голосов
/ 12 октября 2011

Вы переопределяете метод parse вместо того, чтобы реализовывать новый метод parse_item.

2 голосов
/ 22 мая 2010

Я полагаю, у вас есть синтаксические ошибки. name = hxs... не будет работать, потому что вы не определены до объекта hxs.

Попробуйте запустить python yourproject/spiders/domain.py, чтобы получить синтаксические ошибки.

2 голосов
/ 27 ноября 2009

Включили ли вы паука в список SPIDER_MODULES в своем scrapy_settings.py?

В учебнике нигде не написано, что вы должны это делать, но вы должны это сделать.

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