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