【问题标题】:JSoup + Link extraction + redirect URLJSoup + 链接提取 + 重定向 URL
【发布时间】:2017-01-27 17:03:34
【问题描述】:

我的代码适用于大多数情况。当站点重定向到新 URL 时,它会失败。例如 URL:http://www.oil-india.com/ 在浏览器中重定向到 http://www.oil-india.com/oilnew/。使用 JSoup,以下代码无法从原始 URL 检索链接。

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

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

【问题讨论】:

  • 检查响应代码以执行您的条件link

标签: jsoup


【解决方案1】:

如果您打印出文档,您会注意到重定向是使用 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>
[...]

【讨论】:

    猜你喜欢
    • 2022-09-30
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    • 2018-09-17
    • 2017-02-02
    • 2018-03-04
    • 2017-08-20
    • 2014-12-09
    相关资源
    最近更新 更多