etree.HTML和etree.tostring的关系和用法
两者之间的关系
HTML和etree.tostring是前后衔接的关系
- HTML负责把网页源码转化为lxml的文本格式,lxml是一种方便导航查找的文本格式。
- 虽然HTML转换完成可是但是还有可能出现部分错误,tostring可以进行修正并且读取。
- 读取之后我们还需要decode()将其转化为str类型的方便我们查看。
wb_data = """
<div>
<ul>
<li class="item-0"><a href="link1.html">first item</a></li>
<li class="item-1"><a href="link2.html">second item</a></li>
<li class="item-inactive"><a href="link3.html">third item</a></li>
<li class="item-1"><a href="link4.html">fourth item</a></li>
<li class="item-0"><a href="link5.html">fifth item</a>
</ul>
</div>
""" #随便摘一段源码
htmls = etree.HTML(wb_data) #转化为html文本并且赋值给htmls,下列几行代码以此转化
res = etree.tostring(htmls)
r = res.decode()
print(type(htmls)) #我们来输出一下看看这几种类型
print(type(res))
print(type(r))
>>><class 'lxml.etree._Element'> #显而易见的已经被我们转化为了lxml文本格式
<class 'bytes'> #修正之后的文本但还不方便直接观看
<class 'str'> #到了这一步就可以方便观看了
etree.HTML和etree.tostrin的使用
- 有人可能会有疑问,明明我们拿出来的源码已经是最方便的格式了为什么还要这么复杂的转化呢,举一个最简单的例子后缀名为py文件的格式只能被python读取,因此我们才需要复杂的转化一种格式对应一种而已。
- 转化完成之后我们才可以使用xpath模块进行llxml文本格式的提取有用的信息了
wb_data = """
<div>
<ul>
<li class="item-0"><a href="link1.html">first item</a></li>
<li class="item-1"><a href="link2.html">second item</a></li>
<li class="item-inactive"><a href="link3.html">third item</a></li>
<li class="item-1"><a href="link4.html">fourth item</a></li>
<li class="item-0"><a href="link5.html">fifth item</a>
</ul>
</div>
"""
htmls = etree.HTML(wb_data)
res = etree.tostring(htmls)
r = res.decode()
print(htmls) #先不打印res了那是一段很长很长的
print(r)
>>><Element html at 0x2d33475acc8> #转化完成之后的储存路径还没被读取的htmls
<html><body><div> #读取并且修改为方便查看之后的r
<ul>
<li class="item-0"><a href="link1.html">first item</a></li>
<li class="item-1"><a href="link2.html">second item</a></li>
<li class="item-inactive"><a href="link3.html">third item</a></li>
<li class="item-1"><a href="link4.html">fourth item</a></li>
<li class="item-0"><a href="link5.html">fifth item</a>
</li></ul>
</div>
</body></html>
欢迎点赞关注加收藏
有疑问可以私聊咨询博主哦