jsoup是一款Java的HTML解析器,主要用来对HTML解析.在爬虫的时候,当咱们用HttpClient之类的框架,获取到网页源码以后,须要从网页源码中取出咱们想要的内容,就能够使用jsoup这类HTML解析器了,能够很是轻松的实现.虽然jsoup也支持从某个地址直接去爬取网页源码,可是只支持HTTP,HTTPS协议,支持不够丰富.因此,主要仍是用来对HTML进行解析.其中,要被解析的HTML能够是一个HTML的字符串,能够是一个URL,能够是一个文件.
一 快速入门
1. 导入jar包
2. 获取Document对象
3. 获取对应的标签Element对象
4. 获取数据css
01
02
03
04
05
06
07
08
09
10
11
12
|
//2.1获取student.xml的path
String path = JsoupDemo1.
class
.getClassLoader().getResource(
"student.xml"
).getPath();
//2.2解析xml文档,加载文档进内存,获取dom树--->Document
Document document = Jsoup.parse(
new
File(path),
"utf-8"
);
//3.获取元素对象 Element
Elements elements = document.getElementsByTag(
"name"
);
System.out.println(elements.size());
//3.1获取第一个name的Element对象
Element element = elements.get(
0
);
//3.2获取数据
String name = element.text();
System.out.println(name);
|
二 类的说明
1. Jsoup:工具类,能够解析html或xml文档,返回Document
* parse:解析html或xml文档,返回Document
* parse(File in, String charsetName):解析xml或html文件的。
* parse(String html):解析xml或html字符串
* parse(URL url, int timeoutMillis):经过网络路径获取指定的html或xml的文档对象
2. Document:文档对象。表明内存中的dom树
* 获取Element对象
* getElementById(String id):根据id属性值获取惟一的element对象
* getElementsByTag(String tagName):根据标签名称获取元素对象集合
* getElementsByAttribute(String key):根据属性名称获取元素对象集合
* getElementsByAttributeValue(String key, String value):根据对应的属性名和属性值获取元素对象集合
3. Elements:元素Element对象的集合。能够当作 ArrayList<Element>来使用
4. Element:元素对象
1. 获取子元素对象
* getElementById(String id):根据id属性值获取惟一的element对象
* getElementsByTag(String tagName):根据标签名称获取元素对象集合
* getElementsByAttribute(String key):根据属性名称获取元素对象集合
* getElementsByAttributeValue(String key, String value):根据对应的属性名和属性值获取元素对象集合
2. 获取属性值
* String attr(String key):根据属性名称获取属性值
3. 获取文本内容
* String text():获取文本内容
* String html():获取标签体的全部内容(包括字标签的字符串内容)
5. Node:节点对象
* 是Document和Element的父类
三 快捷查询方式
1. selector:选择器
* 使用的方法:Elements select?(String cssQuery)
* 语法:参考Selector类中定义的语法
2. XPath:XPath即为XML路径语言,它是一种用来肯定XML(标准通用标记语言的子集)文档中某部分位置的语言
* 使用Jsoup的Xpath须要额外导入jar包。
* 查询w3cshool参考手册,使用xpath的语法完成查询html
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
//1.获取student.xml的path
String path = JsoupDemo6.
class
.getClassLoader().getResource(
"student.xml"
).getPath();
//2.获取Document对象
Document document = Jsoup.parse(
new
File(path),
"utf-8"
);
//3.根据document对象,建立JXDocument对象
JXDocument jxDocument =
new
JXDocument(document);
//4.结合xpath语法查询
//4.1查询全部student标签
List<JXNode> jxNodes = jxDocument.selN(
"//student"
);
for
(JXNode jxNode : jxNodes) {
System.out.println(jxNode);
}
System.out.println(
"--------------------"
);
//4.2查询全部student标签下的name标签
List<JXNode> jxNodes2 = jxDocument.selN(
"//student/name"
);
for
(JXNode jxNode : jxNodes2) {
System.out.println(jxNode);
}
System.out.println(
"--------------------"
);
//4.3查询student标签下带有id属性的name标签
List<JXNode> jxNodes3 = jxDocument.selN(
"//student/name[@id]"
);
for
(JXNode jxNode : jxNodes3) {
System.out.println(jxNode);
}
System.out.println(
"--------------------"
);
//4.4查询student标签下带有id属性的name标签 而且id属性值为itcast
List<JXNode> jxNodes4 = jxDocument.selN(
"//student/name[@id='itcast']"
);
for
(JXNode jxNode : jxNodes4) {
System.out.println(jxNode);
}
|
更多免费技术资料可关注:annalin1203java