java - HtmlUnit - 抓取数据

标签 java htmlunit

如何使用 HtmlUnit 将包含 javascript 的页面提取为 HTML?我找到了如下示例代码,但不起作用。

public class Downloader {

        public static void main(String[] args) throws Exception {
            LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");

            java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.OFF); 
            java.util.logging.Logger.getLogger("org.apache.commons.httpclient").setLevel(Level.OFF);

            try (final WebClient webClient = new WebClient()) {
                final HtmlPage page = webClient.getPage("https://www.oddsportal.com/matches/soccer/");
                System.out.println(page.asText());
            }
            System.out.println("END");
        }
}

使用这段代码,我陷入了无限循环。我不知道为什么。如果我在 Firefox 检查器中打开上述站点,我可以在执行 javascript 后看到完整的 HTML 代码。我如何使用 HtmlUnit 达到相同的结果。有可能的?也许我应该使用其他库?有什么建议吗?

最佳答案

HtmlUnit 在解释 javascript 时往往会遇到很多问题。如果您只是寻找游戏数据,否则您可能会更成功: https://github.com/gingeleski/odds-portal-scraper

无论如何,我设法让代码与更改浏览器版本一起工作: 最终 WebClient webClient = new WebClient(BrowserVersion.FIREFOX_60)

关于java - HtmlUnit - 抓取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58031401/

相关文章:

Java Swing 在运行时从 POJO 生成 JTable

java - 如何在 Java 中创建 vector 列表或列表数组

java - 使用 HtmlUnit 预渲染 Javascript 网站(HTML 快照)

java - 使用 HTMLunit 获取 ajax/javascript 内容

eclipse - 如何在每次运行 htmlUnit 或 Selenium 测试之前始终设置正确数量的标签? eclipse

java - 如何在 junits 中覆盖当前系统日期

javacv:在 Java 中迭代 CvSeq

java - 使用 Jackson 解析动态生成的 JSON 对象名称

java - HtmlUnit,如何在不单击提交按钮的情况下发布表单?

java - htmlUnit - 是否可以只执行特定的 JS 函数?