1. 什么是Jsoup
-
Jsoup是一款Java 的HTML(html也是XML文档)解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery选择器的操作方法来取出和操作数据。所以使用jsoup就可以解析HTML。
-
Jsoup使用的是DOM解析方式,把整个HTML文档(XML文档)加载到内存中形成一棵DOM树,得到文档的Document对象。HTML里的标签,会转换成Element对象。
-
jar包:
2. Jsoup的基本使用步骤
-
解析HTML,得到Document对象
-
从Document里找到标签Element对象
-
从Element上获取数据(标签体、或属性值)
三、Jsoup的API介绍
1. 获取Document对象
Jsoup类提供了三种常用方法:
方法
|
参数
|
返回值
|
说明
|
parse(html)
|
html:html字符串
|
Document
|
|
parse(file,charset)
|
file:html文件<br />charset:字符集
|
Document
|
|
connect(url).get()
|
url:网址
|
Document
|
|
2. 获取Element对象
2.1 类似js的方式
Document提供提供了常用方法:
方法
|
参数
|
返回值
|
说明
|
getElementById(id)
|
id:标签的id
|
Element
|
|
getElementsByTag(tagName)
|
tagName:标签名称
|
Elements
|
|
getElementsByClass(className)
|
className:类名
|
Elements
|
|
getElementsByAttribute(attrName)
|
attrName:属性名
|
Elements
|
|
parent()
|
|
Element
|
|
children()
|
|
Elements
|
|
Element:标签转换成的一个对象Elements:本质是ArrayList<Element>,是一个Element的集合
2.2 类似jQuery选择器的方式
css-like语法
2.2.1 常用选择器
-
基本选择器
-
标签选择器:div
-
ID选择器:#div1
-
类选择器:.cls
-
组合选择器:div.cls --获取类名为cls的div元素
-
层级选择器
-
A B:获取A元素的后代元素B
-
A>B:获取A元素的子元素B
-
A+B:获取A元素后边相邻的B元素
-
A~B:获取A元素后边所有的B元素
-
属性选择器
-
A[attr]:获取包含attr属性的A元素
-
A[attr=value]:获取attr属性值是value的A元素
-
A[attr^=value]:获取attr属性值以value开头的A元素
-
A[attr$=value]:获取attr属性值以value结尾的A元素
-
A[attr*=value]:获取attr属性值里包含value的A元素
-
伪选择器(基本过滤选择器)
-
:gt(n):获取索引大于n的
-
:eq(n):获取索引等于n的
-
:has(selector):获取包含有selector结果的元素。比如:li:has(a)获取里边有a元素的li元素
-
:not(selector):排除selector选择的结果不要
2.2.2 选择器使用方法
-
Elements elements = document.select(String cssQuery)
-
Document对象可以使用此方法:从整个html文档里查找
-
Element对象也可以使用此方法:从某Element标签内部查找
-
Elements对象也可以使用此方法:从一批Elements标签内部查找
-
3. 获取数据
Element和Elements提供了获取数据的方法:
方法
|
参数
|
返回值
|
说明
|
html()
|
|
String
|
获取标签体内容
|
text()
|
|
String
|
获取第一个标签体文本内容
|
eachText()
|
|
List<String>
|
获取Elements里每个标签的文本内容
|
attr(attrName)
|
attrName:属性名
|
String
|
获取属性值
|