Я копирую несколько страниц с помощью Scrapy, все работает нормально, но я получаю 2 словаря в своем выводе, вместо этого я хотел бы получить результат обеих страниц в одной выходной строке.
В этом конкретном случае верните выходные данные функции get_image со второй страницы и оставшиеся данные: Artist и album , но я не знаю, как передать эту информацию обратно в основной словарь.
Спасибо!
import scrapy
class OsmoseSpider(scrapy.Spider):
name = "osmose"
def start_requests(self):
baseurl = 'https://www.osmoseproductions.com/liste/?lng=2&categ_rech=0&alpha=0&fmt=990001&srt=2&page='
urls = []
for x in range(1,2):
urls.append(baseurl+str(x))
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def get_image(self, response):
for im in response.xpath('//*[@id="img_product_page_osmose"]/img[@id="id_photo_principale"]/@src').getall():
yield {'image': im}
def parse(self, response):
artist, album, link, images = [], [], [], []
for a in response.xpath('//*[@id="paginCorpA1"]/div[*]/div/div[2]/div[1]/div[2]/a/span[1]/text()').getall():
artist.append(a)
for b in response.xpath('//*[@id="paginCorpA1"]/div[*]/div/div[2]/div[1]/div[2]/a/span[2]/text()').getall():
album.append(b)
for l in response.xpath('//*[@id="paginCorpA1"]/div[*]/div/div[2]/div[1]/div[2]/a/@href').getall():
link.append(l)
for x in link:
next_page = x
if next_page is not None:
yield response.follow(next_page, callback=self.get_image)
for i, j in zip(artist, album):
yield {'artist': i,
'album': j,
}
page = response.url.split("/")[-2]
filename = 'osmose-%s.html' % page
with open(filename, 'wb') as f:
f.write(response.body)
self.log('Saved file %s' % filename)