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
|
獲取屬性值
|