Как получить глубоко вложенный класс в запросах - PullRequest
0 голосов
/ 03 июля 2019

У меня есть скрипт, который использует запросы для получения html, как это: r = session.get("https://www.instacart.com/store/wegmans/search_v3/horizon%201%25", headers=headers)

и вложенный глубоко, что веб-страница (около 26 слоев глубиной) является следующим элементом <span>$5.59</span>, который я хочу очистить.Следующие два элемента вверх - это <span class=""></span> и <div class="item-price" style="flex: 1 1 0%;"></div>, поэтому я сначала подумал, что если я смогу найти класс "item-price", я мог бы просто пойти на два уровня дальше вниз и попробовать этот код:

tree = html.fromstring(r.content)
result = tree.xpath("//div[@class='item-price']")

но когда я печатаю результат, он просто показывает пустой список.Я пробовал ряд других способов, и моя теория заключается в том, что способ использования xpath не идет глубже, чем первый слой элементов, потому что используется объективный xpath, в котором я указал body // div // etc sortработали.

Есть ли способ, которым я могу пройти через все элементы в этом, чтобы найти класс "предмет-цена", или есть лучший способ сделать это?

1 Ответ

1 голос
/ 03 июля 2019

Страницы Instacart генерируются динамически, а requests не выполняет JavaScript.Этот список элементов не существует при начальной загрузке страницы, он добавляется только через javascript и ajax.(Вы можете проверить это, щелкнув правой кнопкой мыши на странице и выбрав «Просмотр источника».)

Фактические данные загружаются из другого динамически генерируемого URL-адреса, который выглядит примерно так:

https://www.instacart.com/v3/retailers/42/module_data/dynamic_item_lists/delivery_promotion?list_ref=unilevermainstream0719&origin_source_type=department&scores=&tracking.page_view_id=7f55bb7a-00bf-4fa8-ac48-fd9e0f10cc59&source=web&cache_key=f90e09-7286-f-5bb&per=30
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...