HtmlUnit不能正确加载JavaScript

时间:2017-11-14 00:48:40

标签: java web-scraping htmlunit

我正在尝试从link中删除表格的内容。

这是“统计信息”标签下的“匹配统计信息”表。

但是,通过使用Chrome检查来源,容器中实际上缺少内容:

<tbody class="matchCentreStatsContainer"></tbody>

所以我假设内容是由JavaScript处理的。

我使用以下代码加载页面,单击“统计信息”选项卡,然后检查页面内容。

    WebClient wc = new WebClient(BrowserVersion.CHROME);
    WebRequest request = new WebRequest(new URL("https://www.premierleague.com/match/14252"));
    wc.getOptions().setThrowExceptionOnScriptError(false);
    wc.setJavaScriptTimeout(10000);
    wc.getOptions().setJavaScriptEnabled(true);

    HtmlPage page = wc.getPage(request);
    wc.waitForBackgroundJavaScript(30000);
    HtmlUnorderedList ul = (HtmlUnorderedList) page.getByXPath("//ul[contains(@class, 'tablist')]").get(0);

    //get the stats tab
    HtmlListItem li = (HtmlListItem) ul.getChildNodes().get(2);
    li.click();
    wc.waitForBackgroundJavaScript(10000);
    String pageAsXml = page.asXml();

但是我的pageAsXml表中仍然没有任何内容,我做错了什么?

1 个答案:

答案 0 :(得分:0)

使用您的代码进行了简短的测试。 如果禁用行wc.getOptions()。setThrowExceptionOnScriptError(false);你会看到有一个js错误(只有HtmlUnit而不是浏览器)。通常这意味着一些javascript代码将不会被执行。请为此打开HtmlUnit问题,我们可以尝试解决此问题。请查看Submitting JavaScript bugs