Jsoup使用選擇器語法來查詢元素

2021-10-02 09:37:29 字數 2909 閱讀 1063

如果你想使用類似於css或jquery的語法來查詢和操作元素,我們可以使用element.select(string selector) 和 elements.select(string selector) 方法實現:

file input = new file

("html path");

document document = jsoup.parser

(input, "utf-8", "");

elements links = docment.select

("a[href]"

); //帶有href屬性的a元素

elements pngs = document.select

("img[src$=.png]"

); 擴充套件名為.png的

element masthead = document.select

("div.masthead"

).first; //獲取class=masthead的div標籤的第乙個div

elements resultlinks = document.select

("h3.r > a"

); // 獲取class=r的h3元素後面的a元素

解說:

jsoup elements物件支援類似css或者jquery的選擇器,來實現非常強大及靈活的查詢功能。這個select方法在document、elements和element中都可以使用,且是上下文相關的,因此可以實現指定元素的過濾,或者鏈式選擇訪問。

select方法將返回乙個elements集合,並提供一組方法來抽取和處理結果。

selector選擇器概述:

tagname

:通過標籤查詢元素,比如

:ans|tag

:通過標籤在命名空間查詢元素,比如

:可以用fb|name語法來查詢:name>元素

#id:

通過id查詢元素,比如

:#logo

.class

:通過class名稱查詢元素,比如

:.masthead

[attrbute]:利用屬性查詢元素,比如

:[href]

[^attr]:

利用屬性名稱字首來查詢元素,比如

:可以用[^data-]來查詢帶有html5 dataset屬性的元素

[attr=value]:利用屬性值來查詢元素,比如

:[width=500]

[attr^=value]、[attr$=value]、[attr*=value]:利用匹配屬性值開頭、結尾或包含屬性值來查詢元素,比如

:[href*=/path/detail?date=20180419]

[attr~=regex]:利用屬性值匹配正規表示式來查詢元素,比如

:*:這個符號將匹配所有

selector選擇組合使用

el#id

:元素+id,比如

:div#logo

el.class

:元素+class,比如

:div.masthead

el[attr]:元素+class, 比如

:a[href]

任意組合,比如

:a[href].highlight

ancestor child

:查詢某個元素下的子元素,比如

:可以用.body p查詢在body元素下的所有p元素

parent > child

:查詢某個父元素下的直接子元素,比如

:可以用div.content >p查詢p元素,也可以用body>*查詢body標籤下所有直接子元素

siblinga + siblingb

:查詢在a元素之前第乙個同級元素b,比如

:div.head + div

slblinga ~ siblingx

:查詢a元素之前的同級x元素,比如

:h1~p

el,el,el

:多個選擇器組合,查詢匹配任意選擇器的唯一元素,例如

:div.masthead,div.logo

偽選擇器selector

:

lt(n)

:查詢哪些元素的同級索引值小於n,比如:td

:lt(3)表示小於三列的元素值:gt

(n):查詢哪些元素的同級索引值大於n,比如:div p:gt

(2)表示哪些div中有包含2個以上的p元素:eq

(n):查詢哪些元素的同級索引值與n相等,比如

: from input:eq

(1)表示包含乙個inout標籤的form元素

:has

(selector)

:查詢匹配選擇器包含元素的元素,比如

:div

:has

(p)表示哪些div包含p元素

:not

(selector)

:查詢與選擇器不匹配的元素,比如

:div

:not

(.logo)表示不包含class=logo元素的所有div列表

:contains

(text)

:查詢包含給定文字的元素,搜尋不區分大小寫,比如 p

:contains

(jsoup)

:containsown

(text)

:查詢直接包含給定文字的元素

:matches

(regex)

:查詢哪些元素的文字匹配指定的正規表示式,比如

:div

:matches

((?i)login)

:matchesown

(regex)

:查詢自身包含文字匹配指定正規表示式的元素

使用JSoup選擇器語法來查詢元素

你想使用類似於css或jquery的語法來查詢和操作元素。可以使用element.select string selector 和elements.select string selector 方法實現 file input new file tmp input.html document doc ...

Jsoup使用選擇器語法來查詢元素

你想使用類似於css或jquery的語法來查詢和操作元素。可以使用element.select string selector 和elements.select string selector 方法實現 file input new file tmp input.html document doc ...

Jsoup使用選擇器語法來查詢元素

你想使用類似於css或jquery的語法來查詢和操作元素。可以使用element.select string selector 和elements.select string selector 方法實現 帶有href屬性的a元素 elements pngs doc.select img src pn...