Как повторно использовать урожай на пауке - PullRequest
0 голосов
/ 25 октября 2018

Я новичок в Scrapy и довольно плохо знаком с python.У меня есть несколько yield с одним и тем же телом внутри паука.

yield {
    'url'  : response.url,
    'html' : response.css('body').extract(),
    'title': response.css('title::text').extract_first(),
}

Каждый yield находится внутри разных методов разбора, но я бы хотел написать yield только один раз и использовать его повторно.

Сначала я попробовал метод, принимающий ответ в качестве аргумента и возвращающий yield.Затем я вызвал этот метод из метода разбора, но Scrapy утверждает, что я не могу вернуть yield.

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Вы можете определить метод для этого кода, например:

def parse_item(self, response): 
    yield {
        'url'  : response.url,
        'html' : response.css('body').extract(),
        'title': response.css('title::text').extract_first(),
    }

И вызвать его из другого метода, используя yield from.Например:

def another_method(self, response)
    # ...
    yield from self.parse_item(response)
0 голосов
/ 25 октября 2018

Похоже, вы хотите что-то вроде этого

item = {
            'url'  : response.url,
            'html' : response.css('body').extract(),
            'title': response.css('title::text').extract_first(),
        }

yield item
yield item
yield item
...