Jsoup解析HTML页面,进行网页爬取数据时遇到的坑
问题一:当我使用doc.getElementsByClass(“class的值”)对以下带有#空格#(多值的)的块,进行获取数据的时候,发现获取不到任何数据。解决过程:使用其它的方法替换它,使用Elements 的select(String cssQuery)Elements elements = elementsRoot.get(0).select(searchbar.sear...
·
问题一:
当我使用doc.getElementsByClass(“class的值”)对以下带有#空格#(多值的)的块,进行获取数据的时候,发现获取不到任何数据。
解决过程:
使用其它的方法替换它,使用Elements 的select(String cssQuery)
Elements elements = elementsRoot.get(0).select(searchbar.searchbar-hotel.hide);
这样便能获取到该块对应的数据元素。
问题二:
爬取数据进行解析时存在部分乱码。
解决过程:
出现乱码,肯定是编码格式出现错误;
而得到的数据只出现很少的一部分乱码,可以通过对比方法找问题。经过与原网页的数据一一进行对应比较,发现是部分空格占位符 导致的。
既然这个字符对我无意义的,那我将它替换就行。使用以下方法解决:
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);
即可解决!

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)