HTML 中存在对象,但我无法 select 它
Object exists in the HTML but I'm unable to select it
我正在写一个 scraper。当我在 chrome 中使用检查元素时,我看到以下内容:
但是当我 运行 我的代码 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。非常感谢任何帮助。
网站由 HTML 和 JavaScript 代码组成。 JavaScript 通常在页面加载时执行,并且页面的源代码可能被修改或异步 AJAX 调用加载了一些额外的内容。 Jsoup 无法解析 Javascript 所以它只能解析原始的 HTML 文档。
不要使用 Chrome 的 Inspect
选项,因为它在可能的转换后显示 HTML。使用 View source
(CTRL+U)。这样您将看到未被 JavaScript 修改的原始 HTML 源代码(您也可以尝试在禁用 JavaScript 的情况下重新加载页面)。原始来源是 Jsoup 下载和解析的内容。
如果是这种情况,并且您真的想解析由 JavaScript 加载的数据,请尝试在 Chrome 的 Network
选项卡中观察 XHR
请求。您可以查看此答案以了解我的意思:
我正在写一个 scraper。当我在 chrome 中使用检查元素时,我看到以下内容:
但是当我 运行 我的代码 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。非常感谢任何帮助。
网站由 HTML 和 JavaScript 代码组成。 JavaScript 通常在页面加载时执行,并且页面的源代码可能被修改或异步 AJAX 调用加载了一些额外的内容。 Jsoup 无法解析 Javascript 所以它只能解析原始的 HTML 文档。
不要使用 Chrome 的 Inspect
选项,因为它在可能的转换后显示 HTML。使用 View source
(CTRL+U)。这样您将看到未被 JavaScript 修改的原始 HTML 源代码(您也可以尝试在禁用 JavaScript 的情况下重新加载页面)。原始来源是 Jsoup 下载和解析的内容。
如果是这种情况,并且您真的想解析由 JavaScript 加载的数据,请尝试在 Chrome 的 Network
选项卡中观察 XHR
请求。您可以查看此答案以了解我的意思: