Python 爬虫 XPath 定位语法详解与实战
XPath(XML Path Language)是 Python 爬虫过程中非常重要的一种用来定位网页元素的语法。它通过路径表达式在 HTML 或 XML 文档树中查找节点,包括元素、属性、文本内容等。本文将详细介绍 XPath 的基础语法、常用函数以及在实际爬虫项目中的应用。
1. 环境准备
在使用 XPath 之前,需要安装 lxml 库,它是 Python 中最常用的 XML/HTML 解析库之一,支持 XPath 1.0 标准。
pip install lxml
同时,爬虫通常还需要 requests 库来获取网页内容:
pip install requests
2. 基础概念与路径表达式
XPath 的核心思想是通过路径表达去寻找节点。节点包括元素、属性和内容。
2.1 路径表达式
| 符号 | 含义 |
|---|---|
/ | 根节点,节点分隔符 |
// | 任意位置(递归下降) |
. | 当前节点 |
.. | 父级节点 |
@ | 属性 |
* | 通配符,匹配任意元素 |
示例代码:
from lxml import etree
doc = '''
<div>
<ul>
<li class="item-0"><a href="link1.html">first item</a></li>
<li class="item-1"><a href="link2.html">second item</a></li>
<li class="item-inactive"><a href="link3.html">third item</a></li>
</ul>
</div>
'''
html = etree.HTML(doc)
# 获取所有 li 元素
print(html.xpath("//li"))
# 获取 div 下的第一个 ul
print(html.xpath("/div/ul[1]"))
# 获取当前节点的父节点
print(html.xpath("//li[@class='item-0']/.."))
2.2 谓语(Predicates)
使用中括号 [] 来限定元素,称为谓语。这允许我们根据索引、属性值或特定条件筛选节点。


