Jsoup 過人之處 —— select 選擇器

jsoup 的過人之處——選擇器html

前面咱們已經簡單的介紹了 jsoup 是如何使用選擇器來對元素進行檢索的。本節咱們把重點放在選擇器自己強大的語法上。下表是 jsoup 選擇器的全部語法詳細列表。正則表達式

表 2. 基本用法:code

<!-- lang: html -->
tagname 	使用標籤名來定位,例如 a
ns|tag 	使用命名空間的標籤訂位,例如 fb:name 來查找 <fb:name> 元素
#id 	使用元素 id 定位,例如 #logo
.class 	使用元素的 class 屬性定位,例如 .head
[attribute] 	使用元素的屬性進行定位,例如 [href] 表示檢索具備 href 屬性的全部元素
[^attr] 	使用元素的屬性名前綴進行定位,例如 [^data-] 用來查找 HTML5 的 dataset 屬性
[attr=value] 	使用屬性值進行定位,例如 [width=500] 定位全部 width 屬性值爲 500 的元素
[attr^=value], [attr$=value], [attr*=value] 	這三個語法分別表明,屬性以 value 開頭、結尾以及包含
[attr~=regex] 	使用正則表達式進行屬性值的過濾,例如 img[src~=(?i)\.(png|jpe?g)]
* 	定位全部元素

以上是最基本的選擇器語法,這些語法也能夠組合起來使用,下面是 jsoup 支持的組合用法:orm

表 3:組合用法:htm

<!-- lang: html -->
el#id 	定位 id 值某個元素,例如 a#logo -> <a id=logo href= … >
el.class 	定位 class 爲指定值的元素,例如 div.head -> <div class=head>xxxx</div>
el[attr] 	定位全部定義了某屬性的元素,例如 a[href]
以上三個任意組合 	例如 a[href]#logo 、a[name].outerlink
ancestor child 	這五種都是元素之間組合關係的選擇器語法,其中包括父子關係、合併關係和層次關係。
parent > child
siblingA + siblingB
siblingA ~ siblingX
el, el, el

除了一些基本的語法以及這些語法進行組合外,jsoup 還支持使用表達式進行元素過濾選擇。下面是 jsoup 支持的全部表達式一覽表:input

表 4. 表達式:form

<!-- lang: html -->
:lt(n) 	例如 td:lt(3) 表示 小於三列
:gt(n) 	div p:gt(2) 表示 div 中包含 2 個以上的 p
:eq(n) 	form input:eq(1) 表示只包含一個 input 的表單
:has(seletor) 	div:has(p) 表示包含了 p 元素的 div
:not(selector) 	div:not(.logo) 表示不包含 class=logo 元素的全部 div 列表
:contains(text) 	包含某文本的元素,不區分大小寫,例如 p:contains(oschina)
:containsOwn(text) 	文本信息徹底等於指定條件的過濾
:matches(regex) 	使用正則表達式進行文本過濾:div:matches((?i)login)
:matchesOwn(regex) 	使用正則表達式找到自身的文本
相關文章
相關標籤/搜索