![341d3f1d65db5af73d40335f8b03bd67.png](https://i-blog.csdnimg.cn/blog_migrate/c73b781064727a0b0d6c5d193c79e265.jpeg)
大家好,上次介绍了BeautifulSoup爬虫入门,本篇内容是介绍lxml模块相关教程,主要为Xpath与lxml.cssselect 的基本使用。
一、lxml介绍
引用官方的解释:
lxml XML工具箱是C库libxml2和libxslt的Python绑定 。它的独特之处在于它将这些库的速度和XML功能的完整性与本机Python API的简单性结合在一起,该Python API大多数都兼容,但优于著名的 ElementTree API。
lxml.etree是一个非常快速的XML库。这主要是由于libxml2的速度,例如解析器和序列化器,或XPath引擎。lxml的其他区域专门为在高层操作(例如树迭代器)中的高性能而编写。
简单的来说,lxml 是一种使用 Python 编写的库,可以迅速、灵活地处理 XML 和 HTML。
二、学习lxml库的目的
利用所学的XPath语法与lxml.cssselect模块,来快速定位特定元素以及节点信息,目的是提取HTML、XML目标数据
三、lxml安装
pip install lxml
或
pip install lxml
-i http://pypi.douban.com/simple/
--trusted-host http://pypi.douban.com
顺便说一句:我使用的开发工具还是vscode,不清楚的看一下之前的推文。
四、etree模块
使用etree模块,我们可以创建XML/Html元素及其子元素,我们用于操作Html或XML文件时非常有用。
4.1 Element类
用于ElementTree的API主容器对象。大多数XML树功能都是通过此类访问的。
下面尝试一下:
from lxml import etree
root=etree.Element('root')
print(root.tag)
child=etree.SubElement(root,'child') # 添加一个子节点
child.set('id','test_Id')
print(etree.tostring(root)) # tostring 为序列化
结果:
![c89b0a02fc1063d7b71a35f6863db9a6.png](https://i-blog.csdnimg.cn/blog_migrate/d533a4ca92e2c01de972586b885da824.png)
可以看出来我们可以使用Element类来创建xml内容。
4.2 tostring()
tostring()主要是对对象进行序列化,不能对集合进行序列化。
from lxml import etree
root = etree.XML('<root><a><b/></a></root>')
print(etree.tostring(root)) #default: method = 'xml'
print(etree.tostring(root, encoding='iso-8859-1')) #设置编码方式为 iso-8859-1
print(etree.tostring(root, pretty_print=True)) # 格式化
root = etree.XML('<html><head/><body><p>Hello<br/>Python知识学堂</p></body></html>')
etree.tostring(root, method='xml') # 默认值为:xml
etree.tostring(root, method='html')