2016-04-01 3 views
2

Ich habe versucht, die HTML-Quelle einer Webseite zuerst mit HtmlUnit, als mit PhantomJS, aber beide sind fehlgeschlagen mir. Die Seitenquelle, die ich bekomme, ist mit Javascript gefüllt, es scheint, dass es nicht ausgeführt wird. Ich verstehe nicht wirklich, was passiert. Die Htmlunit Version Ich habe versucht:Javascript ist nicht auf der Website mit HtmlUnit und PhantomJS ausgeführt

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

Die PhantomJS Version:

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

Wäre wirklich dankbar, wenn mir hier jemand helfen könnte. Vielen Dank.

+0

Wenn Sie nur die statische Quelle verwenden möchten, warum verwenden Sie nicht einfach eine HTTP-Lib oder JSoup? Es wird viel schneller, einfacher und zuverlässiger sein. –

+0

Nein, ich möchte, dass die von JavaScript generierte Quelle Bildlinks erhält. – Jhonny

+0

OK, vielleicht lohnt es sich, die Frage zu klären. Bitte melden Sie auch alle Fehler/Ausgaben, die Sie erhalten. "Es scheint nicht ausgeführt zu werden" ist nicht sehr hilfreich. –

Antwort

0

Ich würde dies nicht überdenken. Installieren Sie in Firefox das (Web) developers toolbar. Klicken Sie auf Quelle anzeigen -> Generierte Quelle.

+0

Mit Ansichtsquelle zeigt es auch nur das Javascript an, das die Bilder erzeugt. Es ist seltsam, weil die Browser die Bilder korrekt laden. Wenn ich "inspect element", sind die image hrefs da. Ich verstehe einfach nicht, warum HtmlUnit das Javascript nicht verarbeitet (keine Fehler). – Jhonny

+0

Generierte Quelle zeigt es nicht an? – MikeJRamsey56

+0

Ja, es scheint, als ob der JS einfach nicht ausgeführt wird und keine Fehler geworfen werden. – Jhonny