HtmlUnitでWebページのhtmlソースをPhantomJSよりも先に取得しようとしていましたが、どちらも失敗しています。私が得るページソースはJavascriptでパックされています。実行されていないようです。私は本当に何が起こっているのか分からない。私が試したHtmlUnitバージョン:HtmlUnitとPhantomJSのウェブサイトでJavascriptが実行されない
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());
は本当に感謝されます。ありがとう。
スタティックソースがほしいと思えば、単にHTTPのlibやJSoupを使うのはなぜですか?それはずっと速く、より簡単で、より信頼できるでしょう。 –
いいえ、Javascriptで生成されたソースで画像リンクを取得します。 – Jhonny
OK、質問を明確にする価値があるかもしれません。また、あなたが得るエラーや出力を報告してください。 「実行されていないようだ」とはあまり役に立たない。 –