Scrapy: как получить возвращаемые значения из Scrapy.Request? - PullRequest
0 голосов
/ 04 мая 2020

В настоящее время я пытаюсь выяснить, как получить возвращаемое значение из запроса на терапию. Первый фрагмент показывает, как я делаю запрос. В функции разбора (2-й фрагмент) я извлекаю некоторые значения, которые я хотел бы вернуть с двумя списками. У меня вопрос: как я могу получить эти два значения после оператора yield в первом фрагменте?

        while i < pages:
        # default link is combined with the specific page number
        url = link+str(i)
        yield scrapy.Request(url=url, callback=self.parse)
        i = i+1

2-й фрагмент:

    def parse(self, response):

    # here the code is filling x_array and y_array with values

    return x_array, y_array

Большое спасибо за вашу помощь !!

1 Ответ

1 голос
/ 04 мая 2020

Вместо того, чтобы просто возвращать значения, Запросы от Scrapy могут заполнять Предметы (словарную структуру), которые вы можете обработать далее в Конвейерах Предметов. В вашем случае достаточно добавить это в ваш файл item.py:

from scrapy.item import Item, Field

class TestItem(Item):
    x_array = Field()
    y_array = Field()

В вашем пауке вы заполняете предмет и выдаете его так:

from ..items import TestItem
def parse(self, response):
    x_array = ['test1', 'test2']
    y_array = ['test3']
    item = TestItem()
    item['x_array'] = x_array
    item['y_array'] = y_array
    yield item
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...