1、lxml模块、xml文档、XPath介绍:
-
一、什么是lxml模块
- lxml是python语言中用于处理xml和html的功能最丰富最完善最简单的模块。
- 它利用XPath就可以实现从xml或者html中解析数据。
- lxml模块安装指令:pip install lxml
-
二、什么是xml?
- xml指可拓展标记语言,xml是一种很像html的标记语言。
- 但是xml和html完全属于两个领域的内容。
- html用于从网页显示数据,xml用于在网络中传输和存储数据。
-
三、什么是XPath?
- XPath是一门在XML和HTMl文档中查找信息的语言。XPath使用路径表达式
- 在xml和html文档中进行导航。XPath使用的路径表达式和我们常用的
- 相对路径、绝对路径很相似。
- 注意在XPath中还有谓语,谓语其实就是更细节的筛选条件,XPath路径就是一层一层筛选,而谓语就是在层内进行细化的筛选(常用的谓语有:[N]、[position]、[@属性名]、[@属性名=属性值])
- 所以XPath就类似于CSS中的选择器,用来定位网页内容的
- 可以借助“|”,添加多个XPath
-
四、XPath的语法结构
- XPath必须要理解的概念:树、节点、根节点、元素节点、属性节点
- 注释节点、文本节点。
- 1.树:指整个html或者XML。
- 2.节点:树结构中的每个部分(标签、文本、属性、注释等)就是一个节点。
- 3.根节点:树结构中第一个节点(最外层的标签)就是根节点
- 4.元素节点:一个标签整体就是一个元素节点,例如:沃尔玛
- 5.属性节点:标签内的一个属性就是一个属性节点,例如:age=“20”
- 6.注释节点:一个注释就是一个注释节点
- 7.文本节点:标签内的文字就是一个文本节点
-
总结:
- 1、在python的lxml模块的etree库中,可以通过etree.XML就可以将从xml文件中读到的结果转为element对象,得到根节点
- 2、得到的element对象,就可以通过xpath方法导航提取数据
- 3、xpath的路径写法一般是写相对路径,是哪个节点对象调用在调用xpath方法,这个节点就要写成点,节点和节点之间是通过(/)间隔,如果需要跨节点,就要用(//)
- 4、如何获取节点中的信息:在路径表达式最后添加 /text(),可以得到节点中的文本节点。添加 /@属性名,可以得到其对应的属性值。
- 具体可以看下面的例子
2、以解析xml文件为例,简单说明lxml模块:
-
首先在对应代码文件夹中新建一个xml文档:
-
xml数据文件:
<supermarket>
<!-- 这是一条平平无奇的注释 -->
<name>沃尔玛</name>
<address>中国四川成都</address>
<staffs>
<name age="20" sex="男">张三</name>
<name age="30" sex="男">李四</name>
<name age="23" gender="女">王五