问题一:

当我使用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);

 即可解决!

Logo

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

更多推荐