lxml库中的etree.HTML和etree.tostring的关系和用法详解

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>

欢迎点赞关注加收藏
有疑问可以私聊咨询博主哦
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值