Объект существует в HTML, но я не могу выбрать его - PullRequest
0 голосов
/ 26 января 2020

Я пишу скребок. Когда я использую элемент проверки в chrome, я вижу следующее:

code visible in chrome inspect element

, но когда я запускаю свой код Elements data = doc.select("div.item-header"); и я печатаю объект data Я вижу, что объект содержит следующий фрагмент html:

<div class="item-header"> 
 <h1 class="text size-20">Snake print bell sleeves top</h1> 
 <div class="text size-12 muted brandname ma_top5">
       <!-- data here is irrelevant --> 
 </div> 
</div>

Итак, я не могу понять, почему мой код получает другой html чем это видно в элементе проверки chrome? Что мне здесь не хватает?

Я использую java, библиотека - Jsoup. Любая помощь очень ценится.

1 Ответ

1 голос
/ 26 января 2020

Сайты состоят из HTML и JavaScript кода. Часто это JavaScript выполняется, когда страница загружается, и возможно, что источник страницы изменен или некоторое дополнительное содержимое загружается асинхронными вызовами AJAX. Jsoup не может проанализировать Javascript, поэтому он может анализировать только исходный документ HTML.
Не использовать параметр Chrome Inspect, поскольку он представляет HTML после возможных преобразований. Используйте View source ( CTRL + U ). Таким образом, вы увидите исходный HTML источник, не измененный JavaScript (вы также можете попробовать перезагрузить страницу с отключенным JavaScript). И этот исходный источник - то, что загружается и анализируется Jsoup.
Если это так, и вы действительно хотите проанализировать данные, загруженные JavaScript, попробуйте наблюдать XHR запросов в Chrome Network вкладка. Вы можете проверить этот ответ, чтобы понять, что я имею в виду: Как загрузить все содержимое HTML - Jsoup

...