Jsoup解析HTML頁面,進行網頁爬取數據時遇到的坑

問題一:

當我使用doc.getElementsByClass(“class的值”)對以下帶有#空格#(多值的)的塊,進行獲取數據的時候,發現獲取不到任何數據。

解決過程:

使用其它的方法替換它,使用Elements 的select(String cssQuery)

Elements elements = elementsRoot.get(0).select(searchbar.searchbar-hotel.hide);

這樣便能獲取到該塊對應的數據元素。

問題二:

 爬取數據進行解析時存在部分亂碼。

解決過程:

出現亂碼,肯定是編碼格式出現錯誤;
而得到的數據只出現很少的一部分亂碼,可以通過對比方法找問題。經過與原網頁的數據一一進行對應比較,發現是部分空格佔位符&nbsp導致的。
既然這個字符對我無意義的,那我將它替換就行。使用以下方法解決:

String hotels = els.text().replace(Jsoup.parse(" ").text(), " ");

問題三:

爬取數據時出現異常。org.jsoup.UnsupportedMimeTypeException: Unhandled content type. Must be text

 解決過程: 

查看日誌,發現是請求類型不符合。
將原來的代碼:

Connection conn = Jsoup.connect(url).timeout(10 * 1000).get();

更換爲:

Connection conn = Jsoup.connect(url).timeout(10 * 1000).get().ignoreContentType(true);

 即可解決!

發佈了135 篇原創文章 · 獲贊 6 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章