我正在尝试访问由某些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。我想知道如何获得这个由Javascript创建的Html源代码,使用HtmlUnit然后获得所述结果并将其传递给Jsoup进行解析?
答案 0 :(得分:0)
Jsoup是服务器端处理框架,
我不确定你的最终目标是什么,我假设你想在同一个页面中使用它,所以我将使用Ajax,你可以这样做:
同一页上的sults。
$( 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); }
});
});