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.
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. –
Nein, ich möchte, dass die von JavaScript generierte Quelle Bildlinks erhält. – Jhonny
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. –