【问题标题】:Can't get correct source from HtmlUnit无法从 HtmlUnit 获得正确的来源
【发布时间】:2017-06-02 20:17:40
【问题描述】:

我正在尝试使用 htmlunit 获取 this 页面的源代码,但似乎某些 javascript 没有被执行(或者可能正在发生其他事情)。它只返回在表格出现之前显示的“正在加载...”阶段的页面。我做错了吗?

我的代码:

[...] WebClient webClient = new WebClient(BrowserVersion.CHROME);
Page page = webClient.getPage(url);
WebResponse response = page.getWebResponse();
String content = response.getContentAsString();
System.out.println("HTML: " + content); [...]

【问题讨论】:

  • 我怀疑页面有javascript来修改内容,当你抓取内容时它还没有完成运行。尝试在获取页面后立即添加webClient.waitForBackgroundJavaScriptStartingBefore(10000);
  • 已经尝试过了,但只是为了确保我再次尝试...不,没有表格的同一页面...
  • 页面加载时间是否超过 10 秒?如果是这样,请将超时更改为更合适的值。除此之外,我没有想法,抱歉。
  • 也试过20、30、40和60...
  • 解决了。非常感谢您的帮助!

标签: javascript java htmlunit


【解决方案1】:

page.getWebResponse() 返回从服务器接收到的响应,无需修改 JavaScript。

你应该使用:

page.asXml()

page.asText()

对于那个页面,HtmlUnit 似乎通过了一个错误:

com.gargoylesoftware.htmlunit.ScriptException 类型的无效 JavaScript 值

【讨论】:

  • 那么,没有办法获取包含表格的页面吗?
  • 知道了!只需将浏览器版本更改为“FIREFOX_52”,并按照您的建议将页面获取为 XML。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-05
  • 1970-01-01
  • 2021-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多