HtmlUnit - 延迟加载图像

时间:2015-12-29 19:58:34

标签: lazy-loading htmlunit

我正在使用HtmlUnit下载URL,网页正在使用延迟加载(我认为)来加载一些图像。我应该在HtmlUnit中使用哪些设置,以便我可以获取这些图像。

例如,这是我尝试下载的网址之一 -

http://www.ebay.com.au/sch/i.html?_from=R40&_trksid=p2050601.m570.l1313.TR10.TRC0.A0.H0.Xiphone6s.TRS0&_nkw=iphone6s&_sacat=0

产品图像(在前几个之后)具有虚拟src值 -

正如您所看到的,src标签具有虚拟值,实际图像URL存储在imgurl属性中。我认为一旦我们向下滚动,网页就会使用一些javascript来改变src属性的正确值。

这是我的示例代码 -

webClient = new WebClient(BrowserVersion.FIREFOX_38);
webClient.getOptions().setActiveXNative(false);
webClient.getOptions().setAppletEnabled(false);
webClient.getOptions().setDoNotTrackEnabled(true);
webClient.getOptions().setPopupBlockerEnabled(true);
webClient.getOptions().setPrintContentOnFailingStatusCode(false);
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.setCssErrorHandler(new SilentCssErrorHandler());
Page page = webClient.getPage(url);

我尝试了以下内容 -

1)增加窗口高度 -

webClient.getCurrentWindow().setInnerHeight(60000);
webClient.getCurrentWindow().setInnerWidth(60000);

2)尝试在下载页面后向下滚动

webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().setCssEnabled(true);
webClient.waitForBackgroundJavaScript(10 * 1000);
HtmlPage page = (HtmlPage) webClient.getPage(url);
page.getBody().type(KeyboardEvent.DOM_VK_PAGE_DOWN);
Thread.sleep(3000);
String html = page.asXml();

但到目前为止,我还没能得到正确的src网址。 如果有人成功修复了这个延迟加载问题,请提供一些解决方法。

谢谢你!

0 个答案:

没有答案