XML解析之XPath (基础解析速查)
1. 概述
Xpath 是python中用于解析XML文件节点的语言,在使用前需要一些准备
- 安装Python库
pip install lxml
- 导入模块
from lxml import etree
2. 语法及使用
//
子孙节点/
子节点text()
标签内容[@]
属性选择contains()
模糊包含startswith()
指定前缀
对于如下示例HTML文档,利用Xpath语法解析如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<title>Title</title>
</head>
<body>
<ul>
<li id="l1">北京</li>
<li id="l2" class="addr">上海</li>
<li>武汉</li>
<li id="cccc">深圳</li>
</ul>
<a href="https://www.baidu.com/">百度一下</a>
</body>
</html>
etree 中提供本地文件解析和在线数据解析,分别是
parse()
和HTML()
,本例使用本地解析
# XPath解析
tree = etree.parse('html解析示例.html')
# //子孙节点 /子节点
li_list = tree.xpath('//ul/li')
# 标签内容
li_list = tree.xpath('//ul/li/text()')
# 查找有id属性的
li_list = tree.xpath('//ul/li[@id]')
# 查找id属性值为l1的
li_list = tree.xpath('//ul/li[@id="l1"]')
# 查找有id属性的class属性值
li_list = tree.xpath('//ul/li[@id]/@class')
# 逻辑运算
li_list = tree.xpath('//ul/li[@id="l2" and @class="addr"]')
# contains()模糊 starts-with()指定前缀
li_list = tree.xpath('//ul/li[contains(@id,"l")]')
li_list = tree.xpath('//ul/li[starts-with(@id,"c")]')