Моя функция Scrapy никогда не вызывается.Что я скучаю - PullRequest
0 голосов
/ 30 сентября 2018

У меня есть эта общая функция сохранения в 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)

Но она никогда не вызывается.Где я не прав?PS Я знаю, что скрап не должен работать с предметами, трубопроводами и всем остальным.

1 Ответ

0 голосов
/ 30 сентября 2018

Проблема в том, что self.save_results возвращает генератор.Вам нужно следующее:

for item in self.save_results(response.url, menu):
    yield item

Или, если вы используете Python 3.3+, вы можете использовать yield from magic:

yield from self.save_results(response.url, menu)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...