检索纯Java中呈现的HTML DOM

Retrieve rendered HTML DOM in pure Java

本文关键字:HTML DOM Java 检索      更新时间:2023-09-26

我知道这里已经有一些类似的问题了。但我不想用Java构建浏览器,我只想看到源代码完全生成(或"渲染")。就好像我在浏览器中查看生成的DOM一样。有人知道这样的工具吗?

我看过Cobra和HtmlUnit,但它们似乎无法正确呈现更复杂的网站。特别是当AJAX调用在加载后向网站添加内容时。我真的需要一个和浏览器一样的工具,没有实际的显示。我最终必须远程控制浏览器吗?

有人有这方面的经验吗?

在这里可以找到一个非常相似的问题,但没有任何令人满意的答案。

我认为不存在在加载页面后进行异步调用抓取的库。

我的建议是:

  1. 使用Cobra或类似的库获取页面的HTML
  2. 分析AJAX请求的源。(例如,ajax调用将有一个URL参数和一个可用于请求的"data"JSON字符串)
  3. 对于每个AJAX调用,对您捕获的URL参数发出另一个请求
  4. 将每个AJAX调用的结果附加到原始页面的HTML源代码中

这不是一个完美的解决方案,在需要用户触发事件的情况下也不会对您有所帮助。此外,根据网站用于进行异步调用的javascript库的不同,您捕获AJAX事件URL的代码也会有所不同。

希望能有所帮助。

Selenium做了一些类似的事情。您需要在机器上安装硒遥控器。然后您可以将url请求传递给selenium。Selenium将打开浏览器,呈现url中指定的html/dhtml页面。之后,您可以通过查询selenium来获得整个dom。你可以通过编码来完成所有这些事情

http://seleniumhq.org/请注意:您需要安装slenium网络驱动程序或硒遥控器,而不是硒ide。

我必须自己回答这个问题。。。最后,我找到的最好的解决方案实际上是HtmlUnit。对我来说太慢了。所以我构建了自己的工具,当然需要手动设置才能调用所需的链接。但因此,它不必等待任何js超时或类似情况,而是从页面中解析请求的信息并进行所需的调用。这需要大量的手工工作,但似乎没有其他解决方案能足够快地工作。