2017-01-25 6 views
1

Мой код работает в большинстве случаев. Он не работает, когда сайт перенаправляет новый URL-адрес. Например, URL: http://www.oil-india.com/ перенаправляет на http://www.oil-india.com/oilnew/ в браузере. С JSoup приведенный ниже код не может получить ссылки с исходного URL.JSoup + Удаление ссылок + адрес перенаправления

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

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

Проверьте код ответа сделать ваше состояние [ссылка] (http://stackoverflow.com/questions/6467848/how- в-получить HTTP-ответ-кода для-а-url-в-Java) –

ответ

0

Если вы распечатать документ, вы заметите, что перенаправление осуществляется с помощью JavaScript:

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

Можно разобрать тег сценария вручную и при обнаружении window.location.href либо проверить, если он запускается на загружать и извлекать цель или использовать HtmlUnit (хотя и довольно медленно), чтобы следить за перенаправлениями.

Пример кода

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

Выход

<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> 
[...]