@CreativeStory

Как правильно настроить цикл для парсера?

Парсю проект с большой вложенностью до карточки товара и столкнулся с проблемой древовидного прохождения по страницам.

до карточки товара может вести неопределенное количество страниц.
- ссылка на страницу(подкатегория) 1 находится в классе papaSupermarket-subcategories-grid-item,
- ссылка на страницу(подкатегория/подкатегория) 2 находится в классе papaSupermarket-subcategories-grid-item,
- ссылка на страницу(подкатегория/подкатегория/подкатегория) 3 находится в классе papaSupermarket-subcategories-grid-item,
и т.д.

Например на третьей странице уже можно вытащить ссылку на карточку товара, это я сделал, все работает корректно.

Как нужно переписать эту функцию прохода по страницам, с неопределенной вложенностью?

Если на странице есть контейнер с классом papaSupermarket-subcategories-grid-item брать оттуда ссылку на следующую страницу, далее переходить на нее проверять есть ли контейнер с классом papaSupermarket-subcategories-grid-item и если есть то дальше на страницу, если нет - то уже выполнять парсинг.

Есть код:
def parse_grid_items(self, response):
        urls_grid_items = response.css('li.papaSupermarket-subcategories-grid-item > a::attr(href)').extract()
        while urls_grid_items:
            for url_items in urls_grid_items:
                url_items = response.urljoin(url_items)
                # передаем ссылку в функцию def parse
                yield scrapy.Request(url=url_items, callback=self.parse)
  • Вопрос задан
  • 181 просмотр
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
неопределенная вложенность редко бывает, у вас просто мало опыта увидеть структуру, сами подумайте - как делали те, кто закодил этот сайт?, "неопределенная вложенность" неуправляема
Ответ написан
Ваш ответ на вопрос

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

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