最近在研究如何解析Html文件,瞭解到jsoup是一個基於Java的開源HTML解析器,其官網地址以下:css
http://jsoup.org/html
jsoup最大的特色,或者說,它比使用DOM4J進行HTML解析更好的緣由,是它能夠採用jQuery選擇器的語法,例如:正則表達式
1.Document doc=Jsoup.connect("http://en.wikipedia.org/").get();數組
2.Elements newsHeadlines=doc.select("#mp-itn b a");spa
上述代碼就是獲取了http://en.wikipedia.org/頁面中id爲mp-itn的元素下的<b>標籤中的<a>標籤,與jQuery選擇器的結果一致。orm
爲了精確的解析到html頁面中的某一個標籤,我特意查了一些關於jQuery選擇器的資料htm
jQuery的選擇器可謂強大無比,這裏簡單地介紹一下經常使用的元素查找方法:對象
$("#myElement")選擇id值等於myElement的元素,id值不能重複在文檔中只能有一個id值是myElement,因此獲得的是惟一的元素。ip
$("div")選擇全部的div標籤元素,返回div元素數組element
$(".myClass")選擇使用myClass類的css的全部元素
$("*") 選擇文檔中全部的元素,能夠運用多種的選擇方式進行聯合選擇
基本過濾選擇器
$("tr:first") 選擇全部tr元素的第一個
$("tr:last") 選擇全部tr元素的最後一個
$("A B")查找A元素下面的全部子節點,包括非直接子節點
$("form input") 選擇全部的form元素中的input元素
select詳解
描述:HTML代碼的select寫法
經過標籤名來查找
Elements elements=doc.select("span");
注:經過標籤來查找,直接寫"標籤名"就好,不須要尖括號
經過id來查找
Elements elements=doc.select("#mySpan");
注:經過id來查找,使用方法跟css指定元素同樣,用#
經過class名來查找
Elements elements=doc.select(".myClass");
注:經過id來查找,使用方法跟css指定元素同樣,用.
利用標籤內屬性名查找元素
Elements elements=doc.select("span[class=class1]span[id=id1]");
注:規則爲標籤名[屬性名=屬性值] ,標籤名可寫可不寫,多個屬性即多個[],如上。
利用標籤內屬性名前綴查找元素
Elements elements=doc.select("span["c1]");
注:規則爲 標籤名["屬性名前綴],標籤名可寫可不寫,多個屬性即多個[]。
利用標籤內屬性名+正則表達式查找元素
Elements elements=doc.select("span[class=AB]");
注:規則爲 標籤名[屬性名=正則表達式],以上正則表達式的意思是查找以class值以AB爲開頭的標籤,標籤可寫可不寫,多個屬性即多個[]
利用標籤文本包含某些內容來查找
Elements elements=doc.select("span:contains(3)");
注:規則爲 標籤名:contains(文本值)
利用標籤文本包含某些內容+正則表達式來查找
Elements elements=doc.select("span:matchesOwn(3)");
注:規則爲 標籤名:matchesOwn(正則表達式),以上的正則表達式的意思是
以文本值以3爲開頭的標籤
select方法返回的是一個Elements對象,裏面包含着找到的全部節點,遍歷Elements,經過get(index),就能夠拿出具體的節點了。經過節點的text()方法,就可拿出文本值。