Scrapy 刮擦错误:Can';找不到回拨

Scrapy 刮擦错误:Can';找不到回拨,scrapy,scrapy-spider,Scrapy,Scrapy Spider,Scrapy 1.0、Python 2.7.9、Ubuntu 15.04 我在SO上看到了很多类似的问题,但它们都略有不同,没有一个提到找不到回调错误 我的问题是我无法从我的爬行蜘蛛中获得任何输出。我已经在DMOZ示例和我的目标站点上成功地使用了BaseSpider(现在是scrapy.Spider) 我可以成功地从命令行中删除内容。但出于某种原因,我的爬行蜘蛛什么也得不到 这里的代码示例只是众多迭代中的一个。我试过用爬行蜘蛛和搔痒蜘蛛 我已经试着既答应又返回一个请求和一个项目。我已将回调放在规

Scrapy 1.0、Python 2.7.9、Ubuntu 15.04

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

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

我可以成功地从命令行中删除内容。但出于某种原因,我的爬行蜘蛛什么也得不到

这里的代码示例只是众多迭代中的一个。我试过用爬行蜘蛛和搔痒蜘蛛

我已经试着既答应又返回一个请求和一个项目。我已将回调放在规则和方法上。什么都没起作用

很明显,我做错了什么,可能很小,很简单,很明显,但我不明白

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)

对于到达此线程的任何人,我建议将所有制表符缩进更改为空格。我花了好几个小时才弄明白。即使回调方法在类中,我也在努力解决AttributeError问题。这发生在我使用升华文本时


希望这对某人有所帮助。

请检查您的缩进。StackOverflow编辑器允许您粘贴一些代码,然后使用
{}
按钮正确识别它(在选择它之后)。您需要在spider类中定义
parse_item
(比
class MySpider()多1级缩进)