Javascript不会在带有HtmlUnit和PhantomJS的网站上执行

Javascript不会在带有HtmlUnit和PhantomJS的网站上执行,java,selenium,phantomjs,htmlunit,Java,Selenium,Phantomjs,Htmlunit,我试图先用HtmlUnit而不是PhantomJS获取网页的html源代码,但这两种方法都失败了。我得到的页面源代码是用Javascript打包的,看起来它没有被执行。我真的不明白发生了什么事。我尝试的HtmlUnit版本: webClient = new WebClient(BrowserVersion.FIREFOX_38); webClient.getOptions().setJavaScriptEnabled(true); webClient.setAjaxController(new

我试图先用HtmlUnit而不是PhantomJS获取网页的html源代码,但这两种方法都失败了。我得到的页面源代码是用Javascript打包的,看起来它没有被执行。我真的不明白发生了什么事。我尝试的HtmlUnit版本:

webClient = new WebClient(BrowserVersion.FIREFOX_38);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.setAjaxController(new NicelyResynchronizingAjaxController());
webClient.waitForBackgroundJavaScript(10000);
webClient.getOptions().setThrowExceptionOnScriptError(true);
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);

HtmlPage page = webClient.getPage("https://www.flickr.com/search/?text=cats&view_all=1");
webClient.close();

System.out.println(page.asXml());
phantomJS版本:

File phantomjs = Phanbedder.unpack();
DesiredCapabilities dcaps = new DesiredCapabilities();
dcaps.setJavascriptEnabled(true);
dcaps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, phantomjs.getAbsolutePath());
dcaps.setCapability("phantomjs.page.settings.userAgent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36");

driver = new PhantomJSDriver(dcaps);
driver.manage().timeouts().setScriptTimeout(10, TimeUnit.SECONDS);
driver.get("https://www.flickr.com/search/?text=cats&view_all=1");
System.out.println(driver.getPageSource());

如果有人能帮我,我会非常感激的。谢谢。

我不会想太多的。在Firefox上,安装(web)。单击查看源-->生成的源。

如果您只需要静态源,为什么不直接使用HTTP库或JSoup?它将更快、更简单、更可靠。不,我希望Javascript生成的源代码能够获得图像链接。好的,也许有必要澄清这个问题。此外,请报告您收到的任何错误/输出<代码>似乎没有被执行不是很有帮助。嗯,没有真正给出错误,HtmlUnit给出了以下警告:警告:遇到过时的内容类型:“text/javascript”。PhantomJS只输出一些一般信息。使用view source,它也只显示将生成图像的javascript。这很奇怪,因为浏览器正确加载了图像。如果我“inspect element”,那么图像href就在那里。我只是不明白为什么HtmlUnit不处理Javascript(不抛出错误)。是的,似乎JS根本没有执行,也没有抛出错误。如果有人尝试并成功从中获取图像,那将很酷。看看firebug。我的假设是您有一个Javascript错误。