防止 HtmlUnit 2.13 执行 JavaScript

Posted

技术标签:

【中文标题】防止 HtmlUnit 2.13 执行 JavaScript【英文标题】:Prevent HtmlUnit 2.13 from executing JavaScript 【发布时间】:2013-12-01 11:52:38 【问题描述】:

这是我获取页面的代码:

WebClient webClient = new WebClient();
htmlPage page = webClient.getPage(url);

问题是webClient 总是自动执行 javascript 并向我抛出一个错误列表。我只想获取原始来源。如何防止它执行脚本?我发现在 2.9 版本中有一种方法:

webClient.setJavaScriptEnabled(false);

setJavaScriptEnabled() 函数已被弃用。任何人都知道如何解决这个问题?请帮我。非常感谢。

【问题讨论】:

【参考方案1】:

虽然setJavaScriptEnabled(boolean) 已被弃用,但它已添加到WebClientWebClientOptions 成员中。这是doc。

要禁用 JavaScript,您应该这样做:

webClient.getOptions().setJavaScriptEnabled(false);

另外,如果你想从网页中获取原始 HTML 代码,你应该看看这个问题:

How to get the pure raw HTML of a page in HTMLUnit while ignoring JavaScript and CSS?

请注意,即使是 asXml() 方法也会更改您获取的网页的格式和内容(即使 JavaScript 被禁用)。

【讨论】:

谢谢!它真的节省了我的一天!但是当我尝试在<div> 中将源显示为我的页面的一部分时,浏览器将对某些源页面“无响应”。你知道为什么吗?

以上是关于防止 HtmlUnit 2.13 执行 JavaScript的主要内容,如果未能解决你的问题,请参考以下文章

java使用htmlunit工具抓取js中加载的数据

带有 Selenium 或 HTMLUNIT 的 HttpClient?

Java和HTMLUnit:如何点击提交按钮?

是否有任何替代工具可以替代 HTMLUnit for Android?

HtmlUnit---网页抓取工具解析及使用

硒与 HtmlUnit? [关闭]