2013-10-17 60 views
1

Jsoup庫不解析給定url的完整html。有些分區從url的orignial html中丟失。無法使用Jsoup解析URL的完整html

有趣的事情: http://facebook.com/search.php?init=s:email&[email protected]&type=users

如果你給上面Jsoup的官方網站上提到的網址http://try.jsoup.org/ 它是正確顯示的URL的確切HTML通過提取,但相同的結果不能在程序中使用jsoup被發現圖書館。

這裏是我的Java代碼:

String url="http://facebook.com/search.php?init=s:email&[email protected]&type=users"; 

Document document = Jsoup.connect(url).userAgent("Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36").get(); 

String question =document.toString(); 
System.out.println(" whole content: "+question); 

明確提到這是在自己的官方網站 被使用,但在結果,我可以看到原始的HTML代碼的70%正確的userAgent,但在中間不知何故,我找不到幾個分標籤,這是我想要的數據。

我試過..... .....沒用......爲什麼只有少數div標籤從文檔中丟失。

如果您已登錄Facebook,則可以直接將網址放入瀏覽器中,您可以將答覆看作是:「未找到針對您的查詢的結果。」 檢查拼寫或嘗試其他詞。這是我正在尋找當jsoup解析上述URL的HTML。

但不幸的是,這部分是missing.actually此響應是在div id:「#pagelet_search_no_results」。我無法在解析的html中找到帶有此id的div。我嘗試了很多jsoup提供的方法,但沒有運氣。

回答

2

您還應該設置一個較大的超時,例:

Document = Jsoup.connect(url) 
.header("Accept-Encoding", "gzip, deflate") 
.userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0") 
.maxBodySize(0) 
.timeout(600000) 
.get(); 
+0

感謝您的答覆 –

3

就我所知,Jsoup通常會將檢索到的內容大小限制爲1M。試試這個獲得完整的HTML源代碼:

Document document = Jsoup.connect(url) 
    .userAgent("Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36") 
    .maxBodySize(0) 
    .get(); 

maxBodySize(0)消除了1M的限制。 您可以在連接中設置其他有用的參數,例如超時或Cookie。

+0

嗨@luksch,感謝您的答覆..但還是同樣的問題仍然存在。解析的內容中仍缺少ID爲「pagelet_search_no_results」的div標記。 –

+1

謝謝。非常有用的答案。 – kerberos84