XPath(XML Path Language)是一门解析XML文档的语言,可在XML文档中对元素和属性进行遍历,被广泛用于解析HTML文档数据。
在HTML文档中XPath通过元素(即HTML标签)和属性(即HTML标签的属性)对元素进行定位和查找。
格式 | 功能描述 | 示例 |
---|---|---|
/ | 后面直接跟子节点,表示绝对路径 | /html |
// | 全局查找,可以是任意位置,表示相对路径 | //div//input |
parent | 选取当前节点的父节点 | |
child | 选取当前节点的所有子节点 | |
preceding | 选取当前节点的开始标签之前的所有节点 | |
following | 选取当前节点的结束标签之后的所有节点 | |
ancestor | 选取当前节点的所有先辈节点 (父、祖父等) | |
descendant | 选取当前节点的所有后代节点 (子、孙等) | |
descendant-or-self | 选取当前节点的所有后代节点及当前节点本身 | |
. | 当前节点 | |
… | 上级节点,即父节点 | |
@name | 取带有name属性的标签 | //input[@name] |
@class=‘’ | 取class为指定值的标签 | //input[@class=‘xxx’] |
text() | 文本定位,常和contains()函数一起使用 | //div/a[text()] |
last() | 返回被处理节点的最后一个元素 | //div[@class=‘top’]/a[last()] |
position() | 匹配返回节点的索引位置 | //div[@class=‘top’]/a[position()=1] |
contains() | 匹配一个属性值中包含的字符串,用于模糊定位, | //div[contains(@id,“top”)]/a[last()] |
starts-with() | 匹配一个属性值开始位置的关键字,用于模糊定位 | //div[starts-with(@id,“top”)]/a[last()] |
运算符 = != < > >= <= and or | ||
* | 通配符,匹配任意字符 | //div/* 选取div下的所有标签 |
| | 显示存在的内容 | //input|//title |
[] | 属性包围框,固定语法 |
//span[@class='pl'][3]/following::text()[1] 表示 获取class='pl'的第三个span标签后的第1个文本内容
//a[@class="toindex"][text()] 表示 获取class='toIndex'的a标签的文本
//div[@id='s-top-left']/child::a[1] 表示 获取id='s-top-left'的div标签下子标签的第1个a标签
//div[@id='s-top-left']/descendant::a[1] 表示 获取id='s-top-left'的div标签后代中的第1个a标签
//div[@id='s_top_wrap']/following::a[1] 表示 获取id='s_top_wrap'的div标签后的第1个a标签
//div[@class='mnav s-top-more-btn']/preceding::a[7] 表示 获取class='mnav s-top-more-btn'的div标签之前的第7个a标签
//a[contains(text(),'h')]/parent::*/a[position()=1] 表示 获取包含h的文本的a标签的父标签下索引值为1的a标签
//a[contains(text(),'h')]/ancestor::*/a[position()<2] 表示 获取包含h的文本的a标签的先辈标签下索引值小于2的a标签