我在scrapy spider中具有此常规保存功能。
def save_results(self, menu, url ):
inspect_response(response,self)
res, method = self.crawl_result(url)
self.item['crawl_result'] = res
self.item['raw_menu_urls'] = url
self.item['conversion_method'] = method
self.item['menu_text'] = menu
print self.item
yield self.item
我从其他函数中这样称呼它:
def yelp_menu(self, response):
id = response.meta['id']
menu = response.xpath('//div[@class="container biz-menu"]//text()').extract()
menu = self.clean_text(menu)
self.save_results(response.url, menu)
但是它永远不会被调用。 我哪里错了? 附言我知道这不是应该对项目,管道和其他项目使用的易用性。
答案 0 :(得分:4)
问题是self.save_results
返回一个生成器。您需要以下内容:
for item in self.save_results(response.url, menu):
yield item
或者,如果您使用的是Python 3.3+,则可以使用yield from
魔术:
yield from self.save_results(response.url, menu)