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