2016-02-02 117 views
0

我想解析和使用jsoup操縱HTML。它對大多數網址來說工作得很好,但在一些網站上卻失敗了。例如Jsoup在某些網站上失敗

這工作:

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

在哪裏可以我是想錯了?

謝謝。

+1

你得到的第二個例子的錯誤是什麼? –

+0

@sparky沒有錯誤。沒有返回。由luksch的解釋是有道理的 –

回答

1

該頁面是一個普通的HTML。我不知道如何解釋它,但是如果您將請求更改爲POST請求,即使我的瀏覽器(Firefox)獲取了請求的頁面,也會得到您想要的內容。
我試着添加瀏覽器發送的所有pther標頭 - HOSTACCEPT等,但只是將請求更改爲POST完成了這項工作。

1

看來,在第二個例子中,你會得到一個簡短的HTML回來,除了一些JavaScript之外沒有其他任何東西。所以讓頁面正常工作。問題可能是由於Jsoup無法執行JavaScript,因此JavaScript沒有得到執行,這超出了JSoup的範圍。

爲此,您需要一種不同的方法,例如, Selenium Webdriver或HTMLUnit。

+0

'硒Webdriver'或'HTMLUnit'看起來像一個矯枉過正。訣竅是使用'post()'而不是'get()',正如@TDG –

+0

所建議的那樣。我很高興爲您解決了這個問題。 – luksch