Scrapy错误:无法找到回调

时间:2015-10-12 15:11:54

标签: scrapy scrapy-spider

Scrapy 1.0,Python 2.7.9,Ubuntu 15.04。

我在SO上看到了很多类似的问题,但它们都略有不同,没有一个提到无法找到回调错误。

我的问题是我无法从 CrawlSpider 获得任何输出。我已经在DMOZ示例和目标站点上成功使用了BaseSpider(现在是scrapy.Spider)。

我可以从命令行成功地解决问题。但出于某种原因,我的CrawlSpider根本没有任何东西。

这里的代码示例只是众多迭代中的一个。我尝试过使用CrawlSpider和scrapy.Spider。

我试图产生并返回一个Request和一个Item。我已将回调放在规则和方法上。没有任何效果。

我显然做错了什么,它可能很小,很容易,也很明显,但我没有得到它。

import re
import scrapy

from test2.items import Test2Item

from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from scrapy.http import Request
from scrapy.loader.processors import Join

class MySpider(CrawlSpider):
    name = 't350_crawl2'
    allowed_domains = ['example.com']
    start_urls = ['https://example.com/350/']

    rules = (
        Rule(LinkExtractor(allow=('350/'))),
        Rule(LinkExtractor(allow=('350.+?\.html'), deny=('public.', 'labs\.creativecommons\.org')), callback='parse_item'),
    )

    def parse_item(self, response):
        default_output_processor = Join()
        item = Test2Item()
        item['shortTitle'] = response.xpath("//p[@class = 'parties']/text()").extract()
        item['offCite'] = response.xpath("//p[@class = 'case_cite']/text()").extract()
        item['arrow'] = response.xpath("//p[@class = 'parties']/text()").extract()
        item['arrow'] = response.xpath("//p[@class = 'case_cite']/text()").extract()
        item['bodyText'] = response.xpath("//*/p").extract()
        return item

    def print_items(self, response):
        filename = response.url.split("/")[-1]
        with open(filename, 'wb') as f:
            f.write(response.body)

1 个答案:

答案 0 :(得分:1)

对于到达此主题的任何人,我建议将所有标签缩进更改为空格。我花了一些时间来搞清楚这一点。即使回调方法在类中,我也在努力使用AttributeError。在使用sublime文本时,这发生在我身上。

希望这有助于某人。