Selector 类是 jsoup 库中的一个核心类,用于通过 CSS 选择器语法来查找 HTML 文档中的元素。
选择器语法
通用选择器 * :匹配任何元素。
标签选择器 tag :匹配指定标签名的元素。
ID 选择器 #id :匹配具有指定 ID 的元素。
类选择器 .class :匹配具有指定类名的元素。
属性选择器 [attr] :匹配具有指定属性的元素。
属性值选择器 [attr=val] :匹配具有指定属性值的元素。
属性值前缀选择器 [attr^=valPrefix] :匹配属性值以指定前缀开头的元素。
属性值后缀选择器 [attr$=valSuffix] :匹配属性值以指定后缀结尾的元素。
属性值包含选择器 [attr*=valContaining] :匹配属性值包含指定文本的元素。
属性值正则选择器 [attr~=regex] :匹配属性值符合正则表达式的元素。
子元素选择器 E F :匹配作为 E 元素后代的 F 元素。
子元素选择器 E > F :匹配作为 E 元素直接子元素的 F 元素。
相邻兄弟选择器 E + F :匹配紧接在 E 元素后的 F 元素。
兄弟选择器 E ~ F :匹配在 E 元素之后的所有 F 元素。
分组选择器 E, F, G :匹配 E、F 或 G 元素。
伪类选择器
:lt(n) :匹配兄弟元素中索引小于 n 的元素。
:gt(n) :匹配兄弟元素中索引大于 n 的元素。
:eq(n) :匹配兄弟元素中索引等于 n 的元素。
:has(selector) :匹配包含指定选择器匹配的元素的元素。
:is(selector list) :匹配选择器列表中任意一个选择器的元素。
:not(selector) :匹配不匹配指定选择器的元素。
:contains(text) :匹配包含指定文本的元素。
:containsOwn(text) :匹配直接包含指定文本的元素。
:containsData(data) :匹配包含指定数据的元素。
:containsWholeText(text) :匹配包含指定完整文本的元素。
:containsWholeOwnText(text) :匹配直接包含指定完整文本的元素。
:matches(regex) :匹配包含符合正则表达式的文本的元素。
:matchesWholeText(regex) :匹配包含符合正则表达式的完整文本的元素。
:matchesWholeOwnText(regex) :匹配直接包含符合正则表达式的完整文本的元素。
结构伪类选择器
:root :匹配文档的根元素。
:nth-child(an+b) :匹配父元素之前有 an+b-1 个兄弟元素的元素。
:nth-last-child(an+b) :匹配父元素之后有 an+b-1 个兄弟元素的元素。
:nth-of-type(an+b) :匹配父元素之前有 an+b-1 个同类型兄弟元素的元素。
:nth-last-of-type(an+b) :匹配父元素之后有 an+b-1 个同类型兄弟元素的元素。
:first-child :匹配父元素的第一个子元素。
:last-child :匹配父元素的最后一个子元素。
:first-of-type :匹配父元素的第一个同类型子元素。
:last-of-type :匹配父元素的最后一个同类型子元素。
:only-child :匹配没有其他兄弟元素的元素。
:only-of-type :匹配没有其他同类型兄弟元素的元素。
:empty :匹配不包含任何子元素的元素。
方法
select(String query) :根据 CSS 选择器查找匹配的元素。
selectFirst(String cssQuery, Element root) :根据 CSS 选择器查找第一个匹配的元素。
注意事项
使用正则表达式时,可能需要使用 Pattern.quote("regex") 来正确解析。
特殊字符需要使用 \ 进行转义。