Jsoup在某些网站上失败了

时间:2016-02-02 14:53:43

标签: java html-parsing jsoup

我正在尝试使用jsoup解析和操作HTML。它对大多数URL工作得很好,但有些失败了。 e.g。

这有效:

Document document = Jsoup.connect("https://www.yahoo.com/politics/time-to-take-sanders-seriously-1342599418519606.html")
        .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11 Firefox/19.0")
        .timeout(10*1000)
        .get();

这失败了:

Document document = Jsoup.connect("http://www.sciencedaily.com/releases/2016/02/160201215944.htm")
        .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11 Firefox/19.0")
        .timeout(10*1000)
        .get();

我哪里可能出错?

感谢。

2 个答案:

答案 0 :(得分:1)

在第二个例子中,你似乎得到了一个简短的HTML,除了一些JavaScript之外没什么。所以让页面工作得很好。问题可能是JavaScript没有被执行,这超出了JSoup的范围,因为Jsoup无法执行JavaScript。

为此你需要一种不同的方法,例如Selenium Webdriver或HTMLUnit。

答案 1 :(得分:1)

该网页是常规HTML。我不知道如何解释它,但如果您将请求更改为POST请求,即使我的浏览器(Firefox)获得了{GET请求,您也会得到您想要的内容{1}}请求 我已尝试添加浏览器发送的所有pther标头 - HOSTACCEPT等,但只是将requet更改为POST才能完成此任务。