我试图让网站的内容页面,即页面的右侧公寓的列表(类div元素=“分类”)。在浏览器中查看页面时,很明显它使用了 JavaScript。
我正在使用 HtmlUnit for Java,尤其是waitForBackgroundJavaScript(10000)方法来等待 JavaScript 完成。但是,它仍然对我不起作用,并且我得到了与初始调用相同的 HTML w/o 元素显示公寓页面。
java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF);
java.util.logging.Logger.getLogger("org.apache.http.client").setLevel(Level.OFF);
URL url = new URL("https://r.onliner.by/pk/#bounds%5Blb%5D%5Blat%5D=53.75074091071493&bounds%5Blb%5D%5Blong%5D=27.301025390625004&bounds%5Brt%5D%5Blat%5D=54.04527964804286&bounds%5Brt%5D%5Blong%5D=27.822875976562504");
WebClient webClient = new WebClient(BrowserVersion.FIREFOX_60);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
HtmlPage page = webClient.getPage(url);
webClient.waitForBackgroundJavaScript(50000);
System.out.println(page.asXml());
webClient.close();
启用setThrowExceptionOnScriptError 会显示 JavaScript 代码中的一些异常(我不确定它是否与问题相关,因为浏览器中没有此类问题)。
我也尝试过其他一些方法,例如
// option 2
webClient.waitForBackgroundJavaScriptStartingBefore(50000);
// option 3
webClient.setJavaScriptTimeout(50000);
// option 4
JavaScriptJobManager manager = page.getEnclosingWindow().getJobManager();
while (manager.getJobCount() > 0)
Thread.sleep(1000);
但没有任何效果。您能否建议如何获取页面内容?
一只萌萌小番薯
相关分类