gpt4 book ai didi

使用 htmlUnit 的基于 Javascript 的动态内容

转载 作者:搜寻专家 更新时间:2023-11-01 02:24:00 24 4
gpt4 key购买 nike

我一直坚持使用 HtmlUnit 获取基于 JavaScript 的动态内容。我期待从页面中获取(登录、注册 html 内容)。使用以下代码,我只获取静态内容。

我是 HtmlUnit 的新手。任何帮助将不胜感激。

String strURL = "https://www.checkmytrip.com" ;
java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(java.util.logging.Level.OFF);
java.util.logging.Logger.getLogger("org.apache.http").setLevel(java.util.logging.Level.OFF);

final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_31);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getCookieManager().setCookiesEnabled(true);
webClient.waitForBackgroundJavaScript(60 * 1000);
webClient.setAjaxController(new NicelyResynchronizingAjaxController());

HtmlPage myPage = ((HtmlPage) webClient.getPage(strURL));

String theContent = myPage.getWebResponse().getContentAsString();
System.out.println(theContent);

最佳答案

两点:

  1. 如提示here,获取页面后需要waitForBackgroundJavaScript()
  2. 您应该改用 myPage.asText() 或 .asXml(),因为 getWebResponse() 返回原始内容而无需执行 JavaScript。

    String strURL = "https://www.checkmytrip.com" ;
    java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(java.util.logging.Level.OFF);
    java.util.logging.Logger.getLogger("org.apache.http").setLevel(java.util.logging.Level.OFF);

    try (final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_31)) {
    webClient.setAjaxController(new NicelyResynchronizingAjaxController());

    HtmlPage myPage = ((HtmlPage) webClient.getPage(strURL));
    webClient.waitForBackgroundJavaScript(10 * 1000);

    String theContent = myPage.asXml();
    System.out.println(theContent);
    }

关于使用 htmlUnit 的基于 Javascript 的动态内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30342087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com