2017-01-25 4 views
1

Mein Code funktioniert in den meisten Fällen. Es schlägt fehl, wenn die Site zu einer neuen URL umleitet. Zum Beispiel die URL: http://www.oil-india.com/ leitet an http://www.oil-india.com/oilnew/ im Browser um. Mit JSoup kann der folgende Code keine Links von der ursprünglichen URL abrufen.JSoup + Link-Extraktion + Weiterleitungs-URL

doc = Jsoup.connect(url).timeout(0).userAgent(USER_AGENT).validateTLSCertificates(false).followRedirects(true).get(); 

Elements subLinks = doc.select("a[href]"); 
+0

Prüfen Sie den Antwortcode Ihren Zustand zu tun [link] (http://stackoverflow.com/questions/6467848/how- to-get-http-Antwort-Code-für-eine-URL-in-Java) –

Antwort

0

Wenn Sie das Dokument ausdrucken, werden Sie feststellen, dass die Umleitung Javascript erfolgt über:

[...] 
window.location.href = '../oilnew/'; 
[...] 

Sie könnten das Skript-Tag manuell analysieren und wenn window.location.href finden entweder überprüfen, ob es auf ausgelöst wird Laden und extrahieren Sie das Ziel oder verwenden Sie HtmlUnit (obwohl es ziemlich langsam ist), um die Weiterleitungen zu folgen.

Beispielcode

String userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36"; 
String url = "http://www.oil-india.com/"; 

Document doc; 
java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(java.util.logging.Level.OFF); 

final WebClient webClient = new WebClient(BrowserVersion.CHROME); 
webClient.getOptions().setJavaScriptEnabled(true); 
webClient.getOptions().setRedirectEnabled(true); 

try { 
    url = webClient.getPage(url).getUrl().toString(); // HtmlUnit 
    doc = Jsoup.connect(url).userAgent(userAgent).followRedirects(true).get(); // jsoup 
    System.out.println(doc.toString()); 
} catch (FailingHttpStatusCodeException | IOException e) { 
    e.printStackTrace(); 
} 

Ausgabe

<a href="#" class="close">Close</a> 
<a href="default.aspx"><img src="oilindia-img/logo.jpg" alt="Oil India" style="height:95px;"></a> 
<a href="screenreader.aspx"><img src="oilindia-img/screen_reader_icon.png" style="vertical-align:middle;" alt="top"><span id="MenuBarTop_link_screenreader" class="link_screenreader">Screen Reader Access</span> </a> 
<a href="javascript:decreaseFontSize();" class="toplink"> <img alt="orange color" src="oilindia-img/a-.png" id="Img1"> </a> 
[...]