介绍
- Jsoup是一个用来处理html文本的java库。它提供了非常方便的API,可以通过dom,css或者类似jquery的方法来提取和操作数据。 嗯,所以他到底是干嘛的呢? 当我们访问一个网站拿到它的html代码的时候,往往我们所需要的一些数据就已经包含在html里,Jsoup就是帮我们把这些我们想要的数据提取出来。还是不够清晰明了?没关系,我们一起来看一个demo。
demo
- 以解析本人首页为例https://www.jianshu.com/u/413ca7e5e66c,首先是拿到首页的html页面,并字符串的格式返回,这里使用okhttp框架,各位看官老爷也可以使用其他框架,只要能拿到html页面即可。
new Thread(new Runnable() {
@Override
public void run() {
OkHttpClient okHttpClient = new OkHttpClient();
Request request = new Request.Builder().url(URL).build();
try {
Response response=okHttpClient.newCall(request).execute();
String htmlData=response.body().string();
resolve(htmlData);
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
-
返回的html字符串如下
返回的html -
然后利用Jsoup对得到的字符串进行解析,返回浏览器,按下F12,我们可以看到页面的html代码,找到对应的文章模块的html,在某个div下的id为list-container的ul、li列表:
文章模块的html -
单看每一个li,可以看出文章的具体内容,这里只解析文章的标题,它在li里的class为title的a标签里:
需要解析的标题的位置 -
根据Jsoup对得到的html进行解析:、
private void resolve(String htmlData) {
Document document = Jsoup.parse(htmlData);
Elements elements = document.select("div#list-container ul li");
List<BlogModel> list=new ArrayList<>();
for(Element element:elements){
BlogModel blogModel = new BlogModel();
blogModel.setTitle(element.select("a.title").first().text());
list.add(blogModel);
}
for(BlogModel blogModel:list){
Log.e("info",blogModel.getTitle());
}
}
- 下面是得到的数据日志:
解析结果
-附jsoup下载地址。
网友评论