繁体   English   中英

如何在 Java 中使用 HtmlUnit 获取由 javascript 创建的 Html,然后使用 Jsoup 解析它?

[英]How do I get Html created by javascript using HtmlUnit in Java and then parse it with Jsoup?

我正在尝试访问由某些 Javascript 创建的网页上的某些内容。 但是,我希望访问的内容是在页面加载后由 javascript 创建的,因此当我尝试使用 Jsoup 解析它时,找不到这块 Html 源代码。

我使用HtmlUnit获取Html源代码的代码如下:

public static void main(String[] args) throws IOException {
           java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(java.util.logging.Level.OFF); 

    WebClient webClient = new WebClient(BrowserVersion.CHROME);
    webClient.getOptions().setThrowExceptionOnScriptError(false);
    webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);

    String url = "myUrl.com";
    out.println("accessing " + url);

    HtmlPage page = webClient.getPage(url);

    out.println("waiting for js");
    webClient.waitForBackgroundJavaScriptStartingBefore(200);
    webClient.waitForBackgroundJavaScript(20000);

    out.println(page.asXml());

    webClient.close();
}

但是当我运行它时,没有打印应该创建的Html。 我想知道如何使用 HtmlUnit 获取由 Javascript 创建的这个 Html 源代码,然后获取所述结果并将其传递给 Jsoup 进行解析?

Jsoup 是服务器端处理框架,
我不确定您的最终目标是什么,我假设您想在同一页面中使用它,所以我将使用 Ajax,以便您可以执行以下操作:

  • 在文档准备好后,捕获文档 dom
  • 发送到服务器端处理
  • 在同一页面上显示结果

就像是:

.

$( document ).ready(function() {
    var allClientSideHtml = $("html").html();

var dataToSend = JSON.stringify({'htmlSendToSever':allClientSideHtml });
 $.ajax({ url: "your_Jsoup_server_url.jsp_or_php/YourJsoupParser",
        type: "POST",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        data: dataToSend , // pass that text to the server as a JSON String
        success: function (msg) { alert(msg.d); },
        error: function (type) { alert("ERROR!!" + type.responseText); }

    });

});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM