第一节 Jsoup简介
一、jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
二、创建maven项目
在pom添加jar包
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.2</version> </dependency> <!-- https://mvnrepository.com/artifact/org.jsoup/jsoup --> <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.8.3</version> </dependency>
以博客园为例
结果
错误:
Description Resource Path Location Type
Missing artifact commons-codec:commons-codec:jar:1.10 pom.xml /Jsoup line 1 Maven Dependency Problem
解决:加个<dependencyManagement>标签
<dependencyManagement>
<dependencies>
依赖包
</dependencies>
</dependencyManagement>
第二节 Jsoup查找DOM元素
getElementById(String id) 根据 id 来查询 DOM
getElementsByTag(String tagName) 根据 tag 名称来查询 DOM
getElementsByClass(String className) 根据样式名称来查询 DOM getElementsByAttribute(String key) 根据属性名来查询 DOM getElementsByAttributeValue(String key,String value) 根据属性名和属性值来查询 DOM
仍以博客园为例
1、getElementsByClass(String className) 根据样式名称来查询 DOM
每个poet_item 对应一个博客标题
代码如下
结果
2、getElementsByAttribute(String key) 根据属性名来查询 DOM
圆圈标的是属性名,横线标的是属性值
3、getElementsByAttributeValue(String key,String value) 根据属性名和属性值来查询 DOM
会爬到属性名所在的 标签及标签的全部属性
第三节 Jsoup使用选择器语法查找DOM
查找有层级关系的,比如div 下嵌套多个div
Id 前加# class属性的话 前加. 标签前什么都不加
1、获取所有博客的标题链接
要怎么获取<a>标签href 的链接呢 看第四节
2、
a[href] 带有href属性的a标签
img[src$=.png] 后缀为png 的 图片标签
3、获取集合第一个元素
以前用的是 get(0)
Elements elements=doc.getElementsByTag("title"); // 获取tag是title的所有DOM元素
Element element=elements.get(0); // 获取第1个元素
现在用的是封装的一个方法first()
Element element=doc.getElementsByTag("title").first();
当然对应的还有last
第四节 Jsoup 获取DOM元素属性值
1、怎么获取a标签的href属性 的 属性值
.text() 纯文本 把html去掉
.html() 获取html包括文本