XPath(全称:XML Path Language)即 XML 路径语言,它是一门在 XML 文档中查找信息的语言,最初被用来搜寻 XML 文档,同时它也适用于搜索 HTML 文档。因此,在爬虫过程中可以使用 XPath 来提取相应的数据。
表达式
表达式 |
描述 |
node_name |
选取此节点所有子节点 |
/ |
表示从根节点选取,绝对路径。子代元素 |
// |
从匹配选择的当前节点选择文档的节点,而不考虑他的位置,其第一个 / 表示根节点。相对路径。子孙代元素 |
. |
选取当前节点 |
.. |
选取当前节点的父节点 |
@ |
选取属性值,通过属性值选取数据 |
一、 node_name 使用方法
例如
//input
二、 / 使用方法
1、绝对路径查询元素
例如
/div/div/input[@name="username"]
2、子代元素使用方法
例如
//div/input[@name="username"]
三、 // 使用方法
1、相对路径查询元素
例如
//div/input[@name="username"]
2、子孙代元素使用方法
例如
//div[@class="clearfix"]//input[@name="username"]
四、 .. 使用方法
1、相对路径查询父元素元素
例如
//input[@name="username"]/..
五、 . 使用方法
1、相对路径查询当前元素
例如
//input[@name="username"]/.
内建函数
Xpath 提供 100 多个内函数,这些函数给我们提供了很多便利,比如实现文本匹配、模糊匹配、以及位置匹配等,下面介绍几个常用的内建函数。
函数名称 |
说明 |
text() |
文本匹配,表示取当前节点文本内容 |
contains() |
文本模糊匹配 |
一、 text() 使用方法
1、在html中匹配文本为login的a标签
例如
//a[text()="login"]
二、 contains() 使用方法
1、在html中匹配文本中包含login的a标签
例如
//a[contains(text()="login")]
//a[contains(@class="login")]
索引
一、 索引 使用方法
例如
(//a[contains(@class="login")])[1]
XPath轴
表达式 |
说明 |
child |
选取当前节点的所有子元素 |
parent |
选取当前节点的父节点 |
descendant |
选取当前节点的所有后代元素(子、孙等) |
ancestor |
选取当前节点的所有先辈(父、祖父等) |
descendant-or-self |
选取当前节点的所有后代元素(子、孙等)以及当前节点本身 |
ancestor-or-self |
选取当前节点的所有先辈(父、祖父等)以及当前节点本身 |
preceding-sibling |
选取当前节点之前的所有同级节点 |
following-sibling |
选取当前节点之后的所有同级节点 |
preceding |
选取文档中当前节点的开始标签之前的所有节点 |
following |
选取文档中当前节点的结束标签之后的所有节点 |
self |
选取当前节点 |
attribute |
选取当前节点的所有属性 |
namespace |
选取当前节点的所有命名空间节点 |
一、使用方式
例如
(//a[contains(@class="login")])[1]//ancestor::
通配符
通配符 |
说明 |
* |
匹配任意元素节点 |
@* |
匹配任意属性节点 |
node() |
匹配任意类型节点 |
一、使用方式
例如
//*[@name="login"]