Вам нужен пример в scrapy о том, как получить ссылку с одной страницы, затем перейти по этой ссылке, получить больше информации со связанной страницы и объединить некоторые данные с первой страницы.
Как объединить результаты из целевой страницы в текущую страницу в scrapy?
Ответ 1
Частично заполните свой элемент на первой странице и поместите его в свой запрос meta. Когда вызывается обратный вызов для следующей страницы, он может принимать частично заполненный запрос, помещать в него больше данных и затем возвращать его.
Ответ 2
Более подробная информация о передаче объектов и объектов запроса meta
описана в этой части документации:
Этот вопрос связан также с: Scrapy: Следуйте ссылке, чтобы получить дополнительные данные элемента?
Ответ 3
Пример из scoc documntation
def parse_page1(self, response):
item = MyItem()
item['main_url'] = response.url
request = scrapy.Request("http://www.example.com/some_page.html",
callback=self.parse_page2)
request.meta['item'] = item
return request
def parse_page2(self, response):
item = response.meta['item']
item['other_url'] = response.url
return item
Ответ 4
Небольшая иллюстрация кода документации Scrapy
def start_requests(self):
yield scrapy.Request("http://www.example.com/main_page.html",callback=parse_page1)
def parse_page1(self, response):
item = MyItem()
item['main_url'] = response.url ##extracts http://www.example.com/main_page.html
request = scrapy.Request("http://www.example.com/some_page.html",callback=self.parse_page2)
request.meta['my_meta_item'] = item ## passing item in the meta dictionary
##alternatively you can follow as below
##request = scrapy.Request("http://www.example.com/some_page.html",meta={'my_meta_item':item},callback=self.parse_page2)
return request
def parse_page2(self, response):
item = response.meta['my_meta_item']
item['other_url'] = response.url ##extracts http://www.example.com/some_page.html
return item