gpt4 book ai didi

android - JSoup 没有显示 Java 中的所有 html(缺少 td 和 tr 标签)

转载 作者:行者123 更新时间:2023-11-29 20:31:17 25 4
gpt4 key购买 nike

我无法获取标签下的所有 html 代码。这是我当前的代码:

Document document = Jsoup.connect("http://stackoverflow.com/questions/2971155/what-is-the-fastest-way-to-scrape-html-webpage-in-android").get();
Elements desc = document.select("tr");

System.out.println(desc.toString());

这是针对那个问题的,我正在尝试从问题的描述中获取文本。但是我没有得到某些 tr 或 td 标签,比如问题的标签。这是我要获取的 td 标签:

<td class="postcell">

在该标签下是实际的帖子。现在,当我打印出我实际得到的内容时,我得到了大量空的 td 标签和一些评论,但不是实际的帖子。

 <tr id="comment-37956942" class="comment ">
<td>
<table>
<tbody>
<tr>
<td class=" comment-score"> &nbsp;&nbsp; </td>
<td> &nbsp; </td>
</tr>
</tbody>
</table> </td>
<td class="comment-text">
<div style="display: block;" class="comment-body">
<span class="comment-copy">You shouldn't parse HTML with regexes: <a href="http://blog.codinghorror.com/parsing-html-the-cthulhu-way/" rel="nofollow">blog.codinghorror.com/parsing-html-the-cthulhu-way</a></span> –&nbsp;
﹕ <a href="/users/25612/motob%c3%b3i" title="469 reputation" class="comment-user">motobói</a>

它继续使用空的 td 和 tr 标签。我找不到真正的问题。有人知道为什么会这样吗?

本质上,我只想要问题帖子中的文本,但我不知道如何获取它,所以如果有人能告诉我如何获取文本就太好了。

最佳答案

Jsoup 是一个解析器。这意味着它不能执行任何可以生成 html 的 javascript 代码。当您遇到此问题时,检索该内容的唯一方法是通过 headless browser ,其中包括一个 javascript 引擎。一个受欢迎的图书馆是 selenium webdriver .

为了确定您尝试解析的内容是在服务器(静态内容)还是在客户端(动态内容-javascript 生成)生成的,您可以执行以下操作:

  1. 访问你要解析的页面
  2. Ctrl + U

上述步骤将打开一个新选项卡,其中包含 jsoup 接收的内容。如果您需要的内容不存在,则由 javascript 生成。

按照步骤搜索内容。如果它在那里,但 jsoup 仍然有问题,那么很可能是该站点认为您是机器人或移动设备。尝试设置桌面浏览器的 userAgent,看看会发生什么。

Document document = Jsoup.connect("http://stackoverflow.com/questions/2971155/what-is-the-fastest-way-to-scrape-html-webpage-in-android").userAgent("USER_AGENT_HERE").get();

最重要的是,当网站公开 API 供用户以编程方式提取信息时,最好只使用它。 Stackoverflow has an API available

关于android - JSoup 没有显示 Java 中的所有 html(缺少 td 和 tr 标签),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31911512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com