通过javascript更改URL后检索URL的内容

时间:2013-07-21 08:01:23

标签: java javascript ajax jquery

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

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

  2. 此页面使用javascript。因此,当我在浏览器中加载URL时,会发生一个javascript函数调用 AFTER 页面已加载(HTML页面的onBodyLoad),并修改了网页上的某些内容(div id的innerHtml之一) 。我在浏览器中可以看到此更改。

  3. 现在,当我尝试使用java做同样的事情时,我只获取页面的HTML内容, BEFORE javascript调用已经发生。

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

  5. 我该怎么做?我的方法应该是什么?

2 个答案:

答案 0 :(得分:1)

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

您应该尝试使用Cobra:Java HTML Parser,它将执行您的JavaScript。 See here for the download以及有关如何使用它的文档。

<强>眼镜蛇:

  

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

答案 1 :(得分:0)

对于读到这个答案的人来说,Scott的答案对我来说是一个起点。 Cobra项目早已死亡,无法处理使用复杂JavaScript的页面。

然而,有一种名为HTML Unit的东西正是我想要的。

这是一个小描述:

  

HtmlUnit是“用于Java程序的GUI-Less浏览器”。它模拟HTML文档,并提供一个API,允许您调用页面,填写表单,单击链接等...就像在“普通”浏览器中一样。

     

它具有相当好的JavaScript支持(不断改进),即使使用非常复杂的AJAX库也可以工作,根据您要使用的配置模拟Firefox或Internet Explorer。

     

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