2026-10-24 21:55:00
XPath 是一种在 XML 文档中查找信息的语言,Python 中通过 lxml.etree 模块实现其功能。以下是对 XPath 基本使用的详细说明:
一、XPath 简介XPath 用于在 XML 文档中定位节点,支持通过路径表达式选择节点或节点集。XML 文档由节点构成,常见类型包括:
节点关系包括父子、兄弟、祖先/后代等。XPath 的优势在于比正则表达式(re)更简洁直观,适合解析网页结构化数据。
二、XPath 基本使用步骤1. 安装与导入模块pip install lxmlfrom lxml import etree2. 构造 XML 对象将网页源代码(字符串)转换为 lxml.etree._Element 对象,自动补全缺失标签:
sc = '''<html> <head> <title>Example website</title> </head> <body> <div id="images"> <a href="image1.html">Image1</a> <a href="image2.html">Image2</a> </div> </body></html>'''html = etree.HTML(sc) # 构造对象print(etree.tostring(html).decode('utf-8')) # 输出补全后的XML3. XPath 匹配语法(1)路径表达式xpath() 返回字符串或 _Element 对象列表。常用属性和方法:
test = html.xpath('//a[@href="image1.html"]')[0] # 获取第一个匹配项print(test.tag) # 输出标签名:'a'print(test.attrib) # 输出属性字典:{'href': 'image1.html'}print(test.get('href')) # 输出属性值:'image1.html'print(test.text) # 输出文本内容:'Image1'三、示例:提取链接和文本# 提取所有<a>标签的href和文本links = html.xpath('//a/@href') # ['image1.html', 'image2.html']texts = html.xpath('//a/text()') # ['Image1', 'Image2']# 组合提取for href, text in zip(links, texts): print(f"链接: {href}, 文本: {text}")四、注意事项通过以上步骤,可以高效利用 XPath 解析网页结构,提取所需数据。