参考教程 http://c.biancheng.net/python_spider/lxml.html
一 安装
1.pip 安装
c:\>pip3 install lxml
二 lxml功能介绍
1.ElementTree 和 Element
1.0 提前总结
类型 | 说明 |
---|---|
ElementTree | 代表着xml html的整个文档 1.文档 2.root 3.文档其他结构 |
Element | 一个元素 |
生成节点函数名 | 功能 |
---|---|
etree.XML(字符串,parser=etree.XMLParser()) | 生成element对象 |
etree.HTML(字符串,parser=etree.HTMLParser()) | 生成element对象 1.校正格式,封闭标签 2.一步就生成到顶部的html标签 |
生成tree
tree.getroot() 可以得到根节点
产生tree的方法 | |
---|---|
1. | tree = etree.ElementTree(root) |
2. | tree = etree.parse(filename) |
1.1 XML:从字符串str ->新建节点 Element -> 并作为root节点生成树ElementTree
使用etree.XML(’ str ') 产生xml对象
import lxml.etree as etree
#1. 新建root节点 Element类型
root = etree.XML(''' # XML用来生成节点
<root>
<a>aaa</a>
</root>
''')
#2. 从节点新建ElementTree = 文档(文档说明 + root )
tree = etree.ElementTree(root)
print('root',type(root),'\n',root)
print('tree',type(tree),'\n',tree)
#3. 结果
root <class 'lxml.etree._Element'>
<Element root at 0x2e99cfdcf08>
tree <class 'lxml.etree._ElementTree'>
<lxml.etree._ElementTree object at 0x000002E99CF6AD48>
1.2 HTML:从字符串str ->新建Element (直接到标签)
import lxml.etree as etree
html_str = ''' #字符串str
<div>
<a>aaa</a>
</div>
'''
# 1. 字符串str -> html节点 (直接到<html>标签)
html = etree.HTML(html_str,parser=etree.HTMLParser())
# 2. etree.tostring(对象,encode='utf-8') 转为utf-8字符串
strRes = etree.tostring(html,encoding='utf-8')
print(strRes.decode('utf-8'))
# 结果
<html>
<body><div>
<a>aaa</a>
</div></body>
</html>