2016-04-01 8 views
2

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()); 

は本当に感謝されます。ありがとう。

+0

スタティックソースがほしいと思えば、単にHTTPのlibやJSoupを使うのはなぜですか?それはずっと速く、より簡単で、より信頼できるでしょう。 –

+0

いいえ、Javascriptで生成されたソースで画像リンクを取得します。 – Jhonny

+0

OK、質問を明確にする価値があるかもしれません。また、あなたが得るエラーや出力を報告してください。 「実行されていないようだ」とはあまり役に立たない。 –

答えて

0

私はこれを考えすぎません。 Firefoxの場合は、(ウェブ)developers toolbarをインストールしてください。ソースの表示 - >生成されたソースをクリックします。

+0

ビューソースでは、画像を生成するjavascriptも表示されます。ブラウザが画像を正しく読み込むため、変です。私が要素を調べると、画像hrefがそこにあります。私はちょうどなぜHtmlUnitがそのJavascriptを処理しない(エラーを投げていないのか)理解していない。 – Jhonny

+0

生成されたソースには表示されませんか? – MikeJRamsey56

+0

ええ、JSは単に実行されず、エラーはスローされないようです。 – Jhonny

関連する問題