Я предполагаю, что вы хотите, чтобы данные, извлеченные методом parse
, были объединены вместе с данными, извлеченными из parse_item_page
.
Если вы используете Scrapy v1.7 + вы можете использовать cb_kwargs при построении запроса.
Этот параметр получает dict с произвольными данными, которые будут использоваться в качестве аргумента в функции обратного вызова. Таким образом, вам нужно будет сделать что-то вроде этого в своем запросе:
...
yield response.follow(url = link, callback=self.parse_item_page, cb_kwargs={'scraped_item': items})
Чтобы это работало, вам также необходимо изменить функцию обратного вызова, чтобы получить этот параметр. Примерно так:
def parse_item_page(self, response, scraped_item):
...
Scrapy позаботится об отправке scraped_item
при вызове parse_item_page
.
Если вы используете Scrapy v1.6 или старше:
Вам нужно будет использовать параметр meta . Этот метод все еще работает в более поздних версиях, но предпочтительнее cb_kwargs
(решение выше).
При построении запроса вы будете использовать мета-параметр, чтобы включить в запрос некоторые произвольные данные. Данные будут доступны в объекте ответа, который получает функция обратного вызова. Ваш запрос должен выглядеть так:
...
yield response.follow(url = link, callback=self.parse_item_page, meta={'scraped_item': items})
В этом случае вы получите доступ к данным, позвонив response.meta
:
def parse_item_page(self, response):
items = response.meta.get('scraped_item') #response.meta is a dict
...