Почему Scrap выдает ошибку для меня при попытке паука и анализа сайта? - PullRequest
6 голосов
/ 10 марта 2011

Следующий код

class SiteSpider(BaseSpider):
    name = "some_site.com"
    allowed_domains = ["some_site.com"]
    start_urls = [
        "some_site.com/something/another/PRODUCT-CATEGORY1_10652_-1__85667",
    ]
    rules = (
        Rule(SgmlLinkExtractor(allow=('some_site.com/something/another/PRODUCT-CATEGORY_(.*)', ))),

        # Extract links matching 'item.php' and parse them with the spider's method parse_item
        Rule(SgmlLinkExtractor(allow=('some_site.com/something/another/PRODUCT-DETAIL(.*)', )), callback="parse_item"),
    )
    def parse_item(self, response):
.... parse stuff

Выдает следующую ошибку

Traceback (most recent call last):
  File "/usr/lib/python2.6/dist-packages/twisted/internet/base.py", line 1174, in mainLoop
    self.runUntilCurrent()
  File "/usr/lib/python2.6/dist-packages/twisted/internet/base.py", line 796, in runUntilCurrent
    call.func(*call.args, **call.kw)
  File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 318, in callback
    self._startRunCallbacks(result)
  File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 424, in _startRunCallbacks
    self._runCallbacks()
--- <exception caught here> ---
  File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 441, in _runCallbacks
    self.result = callback(self.result, *args, **kw)
  File "/usr/lib/pymodules/python2.6/scrapy/spider.py", line 62, in parse
    raise NotImplementedError
exceptions.NotImplementedError: 

Когда я изменяю обратный вызов на "parse" и функцию на "parse", я не получаю никакогоошибки, но ничего не выскабливается.Я изменил его на «parse_items», думая, что я могу случайно переопределить метод разбора .Возможно, я неправильно настроил экстрактор ссылок?

Что я хочу сделать, это проанализировать каждую ссылку ITEM на странице CATEGORY.Я делаю это совершенно неправильно?

Ответы [ 2 ]

9 голосов
/ 11 марта 2011

Мне нужно было изменить BaseSpider на CrawlSpider.Спасибо srapy пользователи!

http://groups.google.com/group/scrapy-users/browse_thread/thread/4adaba51f7bcd0af#

Привет, Боб,

Возможно, это может сработать, если вы перейдете с BaseSpider на CrawlSpider?Кажется, что BaseSpider не реализует правило, см .:

http://doc.scrapy.org/topics/spiders.html?highlight=rule#scrapy.contr...

-M

4 голосов
/ 31 января 2015

По умолчанию scrapy ищет функцию анализа в классе. Здесь, в вашем пауке, функция разбора отсутствует. Вместо разбора вы дали parse_item. Проблема будет решена, если parse_item заменить на parse. Или вы можете переопределить метод разбора в spider.py с помощью метода parse_item.

...