1

我在使用 java 检索 HTML 页面的内容时遇到问题。我已经在下面描述了这个问题。

  1. 我在 java 中加载一个返回 HTML 页面的 URL。

  2. 此页面使用 javascript。因此,当我在浏览器中加载 URL 时,会在页面加载后(HTML 页面的onBodyLoad )发生 javascript 函数调用,它会修改网页上的一些内容(div id 的 innerHtml 之一)。这种变化在浏览器中对我来说显然是可见的。

  3. 现在,当我尝试使用 java 做同样的事情时,我只得到页面的 HTML 内容,在javascript 调用发生之前。

  4. 我想要做的是,在发生 javascript 函数调用后获取 html 页面的内容,所有这一切都必须使用 java.xml 来完成。

我怎样才能做到这一点?我的方法应该是什么?

4

2 回答 2

1

您需要使用一个服务器端浏览器库,该库也将执行 JavaScript,因此您可以获得 JavaScript 更新的 DOM 内容。默认的浏览器机制不这样做,这就是为什么你没有得到预期的结果。

您应该尝试 Cobra: Java HTML Parser,它将执行您的 JavaScript。请参阅此处以获取下载以及有关如何使用它的文档。

眼镜蛇:

它是 Javascript 感知的。解析期间发生的 DOM 修改将反映在生成的 DOM 中。但是,可以禁用 Javascript。

于 2013-07-21T08:20:55.847 回答
0

对于任何阅读此答案的人来说,斯科特上面的回答是我的起点。Cobra 项目早已死去,无法处理使用复杂 JavaScript 的页面。

然而,有一个叫做HTML Unit的东西正是我想要的。

这是一个小描述:

HtmlUnit 是“Java 程序的无 GUI 浏览器”。它对 HTML 文档进行建模并提供一个 API,允许您调用页面、填写表单、单击链接等……就像您在“普通”浏览器中所做的一样。

它具有相当好的 JavaScript 支持(不断改进),甚至能够使用非常复杂的 AJAX 库,根据您要使用的配置模拟 Firefox 或 Internet Explorer。

它通常用于测试目的或从网站检索信息。

于 2013-07-22T17:23:04.310 回答