Python 爬虫 XPath 语法详解与实战案例
在编写 Python 爬虫时,面对复杂的网页结构,正则表达式往往显得力不从心。这时候,XPath 就成了解析数据的利器。它最初用于 XML,但在 HTML 处理上同样强大。
XPath 基础
XPath(XML Path Language)是一门在文档中查找信息的语言。它的选择功能十分强大,提供了简洁明了的路径选择表达式,并内置超过 100 个函数,几乎能定位所有想要获取的节点。
路径常用规则
| 表达式 | 描述 | 示例 |
|---|---|---|
| nodename | 选取此节点的所有子节点 | //div |
| / | 从根节点选取 | /html/body/div |
| // | 选取所有当前节点,不考虑位置 | //a |
| . | 选取当前节点 | ./li |
| .. | 选取当前节点的父节点 | ../ul |
| @ | 选取属性 | @href |
谓语规则
谓语被嵌在方括号内,用来查找某个特定的节点或包含特定值的节点。
| 表达式 | 结果 |
|---|---|
/body/div[1] | 选取 body 下的第一个 div 节点 |
/body/div[last()] | 选取 body 下最后一个 div 节点 |
/body/div[position()>=1] | 选取 body 下前两个 div 节点 |
/body/div[@class] | 选取 body 下带有 class 属性的 div 节点 |
/body/div[@class="main"] | 选取 body 下 class 属性为 main 的 div 节点 |
通配符与多路径
通配符用于选取未知的 XML 元素,使用'|'运算符可以选取多个路径。
| 表达式 | 结果 |
|---|---|
/div/* | 选取 div 下的所有子节点 |
/div[@*] | 选取所有带属性的 div 节点 |
| `//div | //table` |
常用函数
使用功能函数能够进行更灵活的模糊搜索。
| 函数 | 用法 | 解释 |
|---|---|---|
| starts-with |


