2016-04-26 12 views
0

Zuerst möchte ich erwähnen, dass ich ein Neuling für HtmlUnit bin. Ich versuche, eine Webseite zu holen und dann den Inhalt zu parsen. URL: https://secure.fattal.co.il/BE_Results.aspx?Lang=heb&In=2016-08-07&Out=2016-08-11&Region=2&Rooms=1&Ad1=2&Ch1=0&Inf1=0HtmlUnit Fehler beim Abrufen der Seite - JavaScript Block

aber ich mit dem Javascript-Gehalt unter gelandet:

<html><head><meta charset="utf-8"></head><body><script>window.rbzns = {fiftyeightkb: 43200000, days_in_week : 1};</script><script src="//d1a702rd0dylue.cloudfront.net/js/sugarman/v7/flat.js"></script><script>rbzns.challdomain=".fattal.co.il"; rbzns.ctrbg="NMdHaCamRWvRkFxSyeq856yW5EEmzuHN32UH9RoO3YoeT4HIU++m8k1QIpK0EQqM2RF/9vvBg5S4A3I18QPa4mRMEb+S4Fh3ZVljis2xiCe2tYg/zlUJMN5kVMgLQKw/mbEk8L77gcYBrz56tLIPxg==";rbzns.rbzreqid="fc167e1a3134363136353639343033970795be87d166"; winsocks(true);</script></body></html> 

Hinweis: Ich begann die URL mit jsoup Parser, aber die Antwort war die gleiche Javascript zu holen.

Nach googeln, auf der Javascript-Inhalt, merke ich, dass ich einen kopflosen Browser wie HtmlUnit verwenden sollte.

Aber auch wenn HtmlUnit zum Abrufen der Seite verwendet wird, ist der Javascript-Inhalt wieder da.

Unten finden Sie ein Bruchteil:

String url = "https://secure.fattal.co.il/BE_Results.aspx?Lang=heb&In=2016-08-07&Out=2016-08-11&Region=2&Rooms=1&Ad1=2&Ch1=0&Inf1=0"; // hard coded just for example 
webClient = new WebClient(); 

// Get the first page 
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false); 

webClient.getOptions().setThrowExceptionOnScriptError(false); 
webClient.getOptions().setRedirectEnabled(true); 
webClient.setJavaScriptTimeout(100000); 
webClient.waitForBackgroundJavaScript(100000); 

page = webClient.getPage(url); 
System.out.println(page.getWebResponse().getContentAsString()); 

ich überall nach einer Lösung zu suchen, ohne konkrete Antwort.

Jede Hilfe wird

Antwort

0

Ok klar, ich es herausfinden.

Die Javascript Quelle poste ich:

<html><head><meta charset="utf-8"></head><body><script>window.rbzns = {fiftyeightkb: 43200000, days_in_week : 1};</script><script src="//d1a702rd0dylue.cloudfront.net/js/sugarman/v7/flat.js"></script><script>rbzns.challdomain=".fattal.co.il"; rbzns.ctrbg="NMdHaCamRWvRkFxSyeq856yW5EEmzuHN32UH9RoO3YoeT4HIU++m8k1QIpK0EQqM2RF/9vvBg5S4A3I18QPa4mRMEb+S4Fh3ZVljis2xiCe2tYg/zlUJMN5kVMgLQKw/mbEk8L77gcYBrz56tLIPxg==";rbzns.rbzreqid="fc167e1a3134363136353639343033970795be87d166"; winsocks(true);</script></body></html> 

ist ein bekanntes Skript zum Prüfen, ob die Anforderung von einem Browser kam und nicht irgendeine Art von Bot oder Crawler. Da HtmlUnit (teilweise) JavaScript unterstützt, habe ich meinen Code geändert, um mit Selenium.webdriver + phantomJS zu arbeiten, und es funktioniert nun wie ein Zauber.