问题描述
在【热门电影】模块,通过jsoup爬虫并解析网页数据时,执行代码,出现“中文乱码”问题。
解决方法
由于网页自带的编码方式与后端开发中jsoup解析的编码方式不匹配,需要修改后端解析网页的编码方式。
//设置爬取网页的地址
String url="https://movie.douban.com/subject/6860160/";
String rawHTML = null;
try {
rawHTML = getHTMLContent(url);
} catch (IOException e) {
e.printStackTrace();
}
// 将当前页面转换成Jsoup的Document对象
//普通解析方式 Document doc = Jsoup.parse(rawHTML);
//设置编码方式为GBK Document doc = Jsoup.parse(new URL(url).openStream(),"GBK",url);
//设置编码方式为UTF-8 Jsoup.parse(new URL(url).openStream(),"UTF-8",url);
Document doc = Jsoup.parse(rawHTML);
// 获取所有电影列表集合,其中select方法内的参数为css选择器、HTML标签等
Elements blogList = doc.select("#subject-doulist");
//获取整个网页源代码内容
String title = blogList.text();
List<List<String>> returnlists = null;
// 针对每个内容进行解析,并输出
for (Element element : blogList) {
//获取a标签
Elements a=element.select("a");
returnlists=new ArrayList<>();
for (Element el : a) {
List<String> list=new ArrayList<>();
// 获取标签内容,得到电影名称
list.add(el.text());
System.out.println("文章名称:" + el.text());
}
}
豆瓣电影源代码