让Jsoup支持JavaScript动态生成的HTML

5

目前我正在开发一个网络爬虫。它应该解析一些特定的网站,并将结果保存成XML文件。到目前为止,还没有任何问题。这个爬虫可以通过一个cfg文件进行快速定制。我使用Jsoup来解析HTML内容。

我最近增加了一些网站,发现在使用JavaScript创建的HTML内容上有很大的问题。难道没有办法让Jsoup支持JavaScript吗?或者至少获取与浏览器中看到的完整HTML内容相同的内容。

我已经尝试过HtmlUnit,但效果不佳。它没有给我与浏览器中相同的内容。

诚挚地,

Ogofo

1个回答

7

Jsoup并不支持JavaScript,也不会模拟浏览器。如果你计划执行JavaScript,请忘记它。在我的经验中,无头浏览器HtmlUnit为我提供了最好的结果(始终是针对Java框架)。

在HtmlUnit中值得尝试的一件事情是在创建WebClient实例时更改BrowserVersion(Chrome/InternetExplorer/FireFox)。有些网站会以不同的方式作出反应,有时候仅仅更改那个值可能会给你期望得到的结果。


1
谢谢。我现在已经完成了项目的这一部分。HtmlUnit 在处理我提供的网站时表现不佳。现在我使用 phantomjs,通过 Java 执行并将输出写入 .html 文件。Phantomjs 的工作效果很好,我没有遇到任何错误。我获得的 HTML 几乎与我在浏览器中查看的完全相同。 - Ogofo
1
是的,phantomjs非常酷。我没有提到它们中的任何一个,因为你正在使用纯Java。另一个选项是zombie.js,你可以看一下。 - Mosty Mostacho

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接