Jsoup 文檔

使用選擇器語法來查找元素
問題
你想使用類似于CSS或jQuery的語法來查找和操作元素。
方法
可以使用Element.select(String selector)
Elements.select(String selector)
方法實(shí)現(xiàn):
File input = new File("/tmp/input.html");Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");Elements links = doc.select("a[href]"); //帶有href屬性的a元素Elements pngs = doc.select("img[src$=.png]"); //擴(kuò)展名為.png的圖片Element masthead = doc.select("div.masthead").first(); //class等于masthead的div標(biāo)簽Elements resultLinks = doc.select("h3.r > a"); //在h3元素之后的a元素

說明
jsoup elements對(duì)象支持類似于CSS (或jquery)的選擇器語法,來實(shí)現(xiàn)非常強(qiáng)大和靈活的查找功能。.
這個(gè)select
方法在Document
, Element
,或Elements
對(duì)象中都可以使用。且是上下文相關(guān)的,因此可實(shí)現(xiàn)指定元素的過濾,或者鏈?zhǔn)竭x擇訪問。
Select方法將返回一個(gè)Elements
集合,并提供一組方法來抽取和處理結(jié)果。
Selector選擇器概述
tagname
: 通過標(biāo)簽查找元素,比如:a

ns|tag
: 通過標(biāo)簽在命名空間查找元素,比如:可以用 fb|name
語法來查找 <fb:name>
元素

id

: 通過ID查找元素,比如:#logo

.class
: 通過class名稱查找元素,比如:.masthead

[attribute]
: 利用屬性查找元素,比如:[href]

[^attr]
: 利用屬性名前綴來查找元素,比如:可以用[^data-]
來查找?guī)в蠬TML5 Dataset屬性的元素
[attr=value]
: 利用屬性值來查找元素,比如:[width=500]

[attr^=value]
, [attr$=value]
, [attr=value]
: 利用匹配屬性值開頭、結(jié)尾或包含屬性值來查找元素,比如:[href
=/path/]

[attr~=regex]
: 利用屬性值匹配正則表達(dá)式來查找元素,比如: img[src~=(?i).(png|jpe?g)]

: 這個(gè)符號(hào)將匹配所有元素

Selector選擇器組合使用
el#id
: 元素+ID,比如: div#logo

el.class
: 元素+class,比如: div.masthead

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

任意組合,比如:a[href].highlight

ancestor child
: 查找某個(gè)元素下子元素,比如:可以用.body p
查找在"body"元素下的所有p
元素
parent > child
: 查找某個(gè)父元素下的直接子元素,比如:可以用div.content > p
查找 p
元素,也可以用body > *
查找body標(biāo)簽下所有直接子元素
siblingA + siblingB
: 查找在A元素之前第一個(gè)同級(jí)元素B,比如:div.head + div

siblingA ~ siblingX
: 查找A元素之前的同級(jí)X元素,比如:h1 ~ p

el, el, el
:多個(gè)選擇器組合,查找匹配任一選擇器的唯一元素,例如:div.masthead, div.logo

偽選擇器selectors
:lt(n)
: 查找哪些元素的同級(jí)索引值(它的位置在DOM樹中是相對(duì)于它的父節(jié)點(diǎn))小于n,比如:td:lt(3)
表示小于三列的元素
:gt(n)
:查找哪些元素的同級(jí)索引值大于n
,比如
: div p:gt(2)
表示哪些div中有包含2個(gè)以上的p元素
:eq(n)
: 查找哪些元素的同級(jí)索引值與n
相等,比如:form input:eq(1)
表示包含一個(gè)input標(biāo)簽的Form元素
:has(seletor)
: 查找匹配選擇器包含元素的元素,比如:div:has(p)
表示哪些div包含了p元素
:not(selector)
: 查找與選擇器不匹配的元素,比如: div:not(.logo)
表示不包含 class=logo 元素的所有 div 列表
:contains(text)
: 查找包含給定文本的元素,搜索不區(qū)分大不寫,比如: p:contains(jsoup)

:containsOwn(text)
: 查找直接包含給定文本的元素
:matches(regex)
: 查找哪些元素的文本匹配指定的正則表達(dá)式,比如:div:matches((?i)login)

:matchesOwn(regex)
: 查找自身包含文本匹配指定正則表達(dá)式的元素

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • [Jsoup Html頁面處理簡單用法] Jsoup工具可以把html文本映射為Dom對(duì)象,用更簡單的操作htm...
    ae7729ac3ac8閱讀 1,101評(píng)論 0 0
  • 這個(gè)select 方法在Document, Element,或Elements對(duì)象中都可以使用。且是上下文相關(guān)的,...
    藝龍閱讀 921評(píng)論 0 1
  • Attribute: $("p").addClass(css中定義的樣式類型); 給某個(gè)元素添加樣式 $("img...
    撲克臉_457e閱讀 656評(píng)論 0 1
  • 清明假期結(jié)束,感覺昨天才回的家,今天就又坐上大客去學(xué)校,坐在二層第一排,前方的路在眼前很近也很遠(yuǎn),似乎也明白,還能...
    喜歡舊痕跡的蓉蓉桑閱讀 303評(píng)論 0 3
  • 產(chǎn)品概述: 貓眼電影的O2O形式我覺得應(yīng)該跟接近實(shí)際生活中的電影票務(wù)活動(dòng),他的定位應(yīng)該是普通用戶,說的直白點(diǎn)就是...
    蝸牛道長168閱讀 2,187評(píng)論 0 9

友情鏈接更多精彩內(nèi)容