Python Scrapy Spider返回None而不是Item
我在下面找到了答案。简而言之,ItemPipeline中的错误缩进导致它返回None。 我一直在尝试用Scrapy编写爬行蜘蛛,以前从未使用python。爬行器爬行、调用回调函数、提取数据并填充项目,但始终不返回任何内容。我已经用一篇打印文章测试过了,一切都正常。我在收益率和回报率两方面都做过尝试(尽管我仍然不理解其中的区别)。坦率地说,我没有主意了。下面是回调函数//edit也添加了spider代码Python Scrapy Spider返回None而不是Item,python,python-2.7,web-scraping,scrapy,Python,Python 2.7,Web Scraping,Scrapy,我在下面找到了答案。简而言之,ItemPipeline中的错误缩进导致它返回None。 我一直在尝试用Scrapy编写爬行蜘蛛,以前从未使用python。爬行器爬行、调用回调函数、提取数据并填充项目,但始终不返回任何内容。我已经用一篇打印文章测试过了,一切都正常。我在收益率和回报率两方面都做过尝试(尽管我仍然不理解其中的区别)。坦率地说,我没有主意了。下面是回调函数//edit也添加了spider代码 class ZeitSpider(CrawlSpider): name= xxxx allow
class ZeitSpider(CrawlSpider):
name= xxxx
allowed_domains = ['example.com']
start_urls = ['http://www.example.com/%d/%d' %(JAHR,39)]
rules = (Rule(SgmlLinkExtractor(restrict_xpaths=('//ul[@class="teaserlist"]/li[@class="archiveteaser"]/h4[@class="title"]')),callback='parse_url',follow=True),)
def parse_url(self,response):
hxs = HtmlXPathSelector(response)
article = Article()
article['url']= response.url.encode('UTF-8',errors='strict')
article['author']= hxs.select('//div[@id="informatives"]/ul[@class="tools"]/li[@class="author first"]/text()').extract().pop().encode('UTF-8',errors='strict')
article['title']= hxs.select('//div[@class="articleheader"]/h1/span[@class="title"]/text()').extract().pop().encode('UTF-8',errors='strict')
article['text']= hxs.select('//div[@id="main"]/p/text()').extract().pop().encode('UTF-8',errors='strict')
article['excerpt'] = hxs.select('//p[@class="excerpt"]/text()').extract().pop().encode('UTF-8',errors='strict')
yield article
以及项目定义
class Article(Item):
url=Field()
author=Field()
text=Field()
title=Field()
excerpt=Field()
好的,在使用pdb单步执行程序后,我发现了错误: 因为我有多个爬行器,所以我想写多个项目管道。为了使每个蜘蛛都能区分它们,我添加了一个
if spider.name=='SpiderName'
return item
注意缩进。管道没有返回任何内容,因此输出变为无
改变压痕后,卡盘工作得完美无缺。PEBCAC的另一个例子。谢谢。错误消息是,
“非类型”对象没有属性“iterkeys”
。也许它可以帮助谷歌在这里重定向。