@maximkalga

Scrapy — как собрать данные со всех товаров на странице по очереди?

Мне нужно в катологе товаров скрапнуть цену и название каждого товара на странице и далее перейти на следущую страницу пагинации.
Пока получается так, что все цены записываются в 1 item списком, и названия также. Если использовать TakeFirst(), то с каждой страницы скрапит 1 товар.
Как итерироваться по товарам страницы? И как задать переход на следущую страницу после прохода всех товаров?

def parse(self, response):
sel = HtmlXPathSelector(response)
item = PromItem()
item['name'] = sel.select('//a[@class="b-product-gallery__product-name-link"]/span/text()').extract()
item['price'] = sel.select('//div[@itemprop="price"]/span[2]/text()').extract()
item['url'] = sel.select('//a[@class="b-product-gallery__product-name-link"]/@href').extract()
return item
  • Вопрос задан
  • 2943 просмотра
Пригласить эксперта
Ответы на вопрос 1
@egorsmkv
Для начала, вам нужно выбрать xpath-запросом все товары на странице.

Например, здесь запрос будет выглядеть так //div[@class='bOneTile inline']
После чего проитерировать их через for и, снова, выбрать через xpath-запрос цену и название для каждого элемента:
# название
a[@class='jsUpdateLink bOneTile_link']
# цена
//span[@class='eOzonPrice_main']

Чтобы перейти на следующую страницу - нужно найти ссылку для неё и снова спарсить данные товаров.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы