我的Scrapy函数从未被调用。我想念什么

时间:2018-09-30 17:15:22

标签: python scrapy

我在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)

但是它永远不会被调用。 我哪里错了? 附言我知道这不是应该对项目,管道和其他项目使用的易用性。

1 个答案:

答案 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)