目录
1. xpath简介
- 什么是xpath
- xpath基本语法结构
2. lxml模块基本用法
课堂笔记
1. xpath简介
1.1 什么是xpath
- XPath(XML Path Language)是一种XML的查询语言,能在XML的树状模型中对结点进行查找
- xpath主要通过文档中结点的关键字或属性对结点内容进行定位
- xpath工具安装
1.2 xpath基本语法结构
语法 | 作用 |
---|---|
nodeName | 选取nodeName下的所有结点 |
/ | 表示从根节点开始 |
// | 选取根节点下的所有结点 |
@ | 对属性进行筛选 |
. | 选取当前结点 |
.. | 选取当前的上一级结点,即父节点 |
* | 通配符,匹配所有结点 |
@* | 匹配所有属性结点 |
node() | 匹配任何类型结点 |
text() | 获取结点下的文本内容 |
2. lxml模块基本用法
-
lxml 主要作为XML/HTML的解析器,对其文本内容进行解析和提取
-
导入lxml下的etree模块:from lxml import etree
-
etree类作用:
- 将XML/HTML文本转换成Element对象
- 将Element对象转换成字符串或二进制数据
-
基本用法:
<!-- students.xml文档 -->
<students>
<student id="cls_01">
<name>xxx</name>
<java>89</java>
<uml>80</uml>
</student>
<student id="cls_02">
<name>yyy</name>
<java>78</java>
<uml>97</uml>
</student>
</students>
from lxml import etree
# 打开students.xml文档
with open('students.xml', 'r', encoding='utf-8') as f:
# 从xml文档中读取内容,并将其转换成Element对象
html = etree.HTML(f.read())
# xpath获取根节点下的所有student结点下的age的文本内容
res = html.xpath('//student/age/text()')
for i in res: # 遍历打印所有student下的age文本内容
print(i) # 89 78
- 其他特殊匹配
特殊匹配 作用 //student[x] 获取根结点下的第x个student结点 //student[last()] 获取根结点下最后一个student结点 //student[last()-x] 获取根结点下倒数第x+1个student结点 //student[position()<x] 获取根结点下第1 - x-1个student结点 //student[@id] 获取根结点下所有拥有id属性的student结点 //student[java>80] 获取根结点下所有student下的Java成绩大与80的student结点