节点选取
表达式 |
描述 |
用法 |
说明 |
nodename |
选取此节点的所有子节点 |
div |
选取div下的所有标签 |
// |
从全局节点中选择节点,任意位置均可 |
//div |
选取整个HTML页面的所有div标签 |
/ |
选取某个节点下的节点 |
//head/title |
选取所有head标签下的titile标签 |
@ |
选取带某个属性的节点 |
//div[@id] |
选择带有id属性的div标签 |
. |
当前节点下 |
./span |
选择当前节点下的span标签 |
谓语
表达式 |
用法说明 |
//head/meta[k]
|
选择所有head下的第k个meta标签 |
//head/meta[last()] |
选择所有head下的最后一个meta标签 |
//head/meta[position()<3] |
选择所有head下的前两个meta标签 |
//div[@id] |
选择带有id属性的div标签 |
//div[@id='u1'] |
选择所有拥有id=u1的div标签 |
通配符
通配符 |
描述 |
示例 |
结果 |
* |
匹配任意节点 |
//div[@id='u1']/* |
选择所有id=’u1‘的div标签下的所有节点 |
@ |
匹配节点中的任意属性 |
//meta[@*] |
选择所有拥有任意属性的meta标签 |
选取多个路径
多个xpath路径使用管道符|
连接,效果等价于”或“
例如 "//div | //span"
选取所有的div和span标签
方法
方法名 |
描述 |
示例 |
结果 |
contains() |
判断一个字符串是否包含另一个字符串 |
//div[contains(@id,"in")] |
选择所有id包含”in”的div节点 |
string(.) |
提取当前元素及其所有子元素的文本内容 |
//div[string(.)="hellow"] |
选择所有文本内容为
”hello“的div节点
|
text() |
提取当前元素的文本内容 |
//a[text()="haha"] |
选择所有文本为“haha”的a节点 |
last() |
返回当前节点集中最后一个节点的位置 |
//li[last()] |
选择最后一个li节点 |
position() |
返回当前节点在同级节点中的位置 |
//li[position()<3] |
选择前两个li节点 |
name() |
返回当前节点的名称 |
//div[name()="content"] |
选择 名称为”content"的div节点 |
count() |
返回当前节点集中的节点数量 |
//div[count(li)=3] |
选择包含三个li子节点的div节点 |
starts-with() |
判断一个字符串是否以另一个字符串开头 |
//a[starts-with(@href,"http")] |
选择href属性以“http”开头的a节点 |
ends-with() |
判断一个字符串是否以另一个字符串结尾 |
//a[ends-with(@href,"html")] |
选择href属性以“html”结尾的a节点 |
not() |
对当前表达式取反 |
//div[not(@class)] |
选择没有class属性的节点 |