【问题标题】:How to parse a HTML Source Code without getting the entire source code.如何在不获取整个源代码的情况下解析 HTML 源代码。
【发布时间】:2015-01-29 07:45:46
【问题描述】:

我有兴趣从网站的源代码中提取特定内容。我可以使用 JSoup 来做到这一点,方法是使用

获取整个源代码
Document doc;
doc = Jsoup.connect("http://example.com").get();
Element divs = document.getElementById("importantDiv");

但是,问题是我需要每天执行大约 20000 次,才能获得 div 中发生的所有更改。每次创建整个文档都会占用大量网络带宽,我想避免这种情况。有没有一种方法可以提取所需的元素,而无需在客户端重新创建整个文档。

注意:代码 sn-p 是一个示例,而不是我需要提取的实际 URL 或 ID。

【问题讨论】:

  • 不,如果不从源 URL 请求所有内容并对其进行解析,就无法做到这一点。一天20,000次听起来很过分。没有可以使用的API吗?
  • Rory :我正在尝试从商业网站提取数据,但我知道没有提供可用于上述目的的 API。 :(
  • 如果它是第三方网站,那么如果你要求那么多,你的 IP 可能会被禁止。

标签: java javascript jquery html jsoup


【解决方案1】:

我认为您不能请求网页的特定部分。 JSoup 基本上是一个 Web 客户端类,Web 客户端无法控制服务器发送它的内容。服务器是决定发送内容的服务器,因此您不能在不请求整个网页的情况下真正请求网页的一部分。

您是否可以访问此网页,还是外部网站?

【讨论】:

  • 这是回答还是要求提供更多信息?
  • 两者,答案是否定的,如果你只有客户端,你就不能。但如果 OP 确实有权访问该网站,我将编辑我的答案以适应
  • terpak : 我无权访问服务器。
【解决方案2】:

如果您无法控制服务器端,则无法进行。您将需要下载完整的 html。但请注意,它只是 HTML,而不是样式表、图像、javascript 等其他资源。

为了节省带宽,您需要在服务器中安装一些代码,以便它只提供所需的信息。

【讨论】:

    【解决方案3】:

    查看URLConnection 类,您可以使用它打开到 URL 的连接 获取连接的输入流并只读取所需的字节数,这将有效,您无需下载整个文档,但不幸的是,您将无法从偏移量开始下载文档。您将始终必须从头开始下载文档。

    【讨论】:

    • 从头开始对我的目的来说很好,因为我需要的特定元素位于 html 文档的前 20% 中。所以,如果这行得通,我至少可以将带宽要求降低到 1/5。我会试试看。
    猜你喜欢
    • 1970-01-01
    • 2015-01-22
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 2011-03-03
    相关资源
    最近更新 更多