lxml中etree.HTML()和etree.tostring()用法[通俗易懂]

lxml中etree.HTML()和etree.tostring()用法[通俗易懂]fromlxmlimportetreetext=”’<div><ul><liclass="item-0"><ahref=&amp

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

etree.HTML():构造了一个XPath解析对象并对HTML文本进行自动修正。
etree.tostring():输出修正后的结果,类型是bytes
可参考以下代码:

from lxml import etree
text = '''
<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>
'''
html = etree.HTML(text)
result = etree.tostring(html)
print(result.decode('utf-8'))

Jetbrains全家桶1年46,售后保障稳定

这里首先导入lxml库的etree模块,然后声明了一段HTML文本,调用HTML类进行初始化,这样就成功构造了一个XPath解析对象。这里需要注意的是,HTML文本中的最后一个li节点是没有闭合的,但是etree.HTML模块可以自动修正HTML文本。
这里我们调用tostring()方法即可输出修正后的HTML代码,但是结果是bytes类型。这里利用decode()方法将其转成str类型,结果如下

<html><body><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>
     </li></ul>
 </div>
</body></html>

可以看到,经过处理之后,li节点标签被补全,并且还自动添加了body、html节点。

参考:崔庆才的Python3网络爬虫开发实战

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/201349.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 推流地址怎么获取_淘宝店怎么和抖音对接

    推流地址怎么获取_淘宝店怎么和抖音对接随着淘宝直播官方不再对外提供推流地址,一些习惯了用(或者必须用)第三方推流平台(如obs)的用户来说,是非常头疼的。这个时候,迫切需要找到淘宝直播的推流地址,本文提供了三种方法来获取,一种比一种简单。闲话少说,直播上干货。方法一:Fiddler+Proxifier抓包的方式(仅使用Fiddler抓不到)1、安装Fiddler(下载地址:https://dl1.qwp365.cn/buding/xiugaiqi/3DMGAME-CheatEnginev7.0CH.zip),安装Proxifier(

    2022年10月19日
    1
  • python中的%s%是什么意思

    python中的%s%是什么意思python中的%s%是什么意思它是一个字符串格式化语法(它从C借用)。请参阅“格式化字符串”:Python支持将值格式化为字符串。虽然这可以包括非常复杂的表达式,但最基本的用法是将值插入到%s占

    2022年7月6日
    30
  • Django(7)url命名的作用「建议收藏」

    Django(7)url命名的作用「建议收藏」前言为什么我们url需要命名呢?url命名的作用是什么?我们先来看一个案例案例我们先在一个Django项目中,创建2个App,前台front和后台cms,然后在各自app下创建urls.py文件

    2022年7月30日
    4
  • Eclipse中取消生成TODO Auto-generated method stub

    Eclipse中取消生成TODO Auto-generated method stub

    2021年7月18日
    58
  • kindeditorasp配置_php配置详解

    kindeditorasp配置_php配置详解KindEditor工具栏配置:第一种:打开KindEditor目录下的kindeditor.js文件,搜索items:,可以看到所有的工具栏按钮都在这里定义成一个数组。删除你不需要的按钮即可,不过这样的操作将影响所有调用该编辑器的页面。第二种:如果在create方法内尚未对其items进行任何指定,那么就会默认继承kindeditor.js内的items的配置,也就是全部菜单。当我们在cr…

    2022年10月12日
    2
  • Graph(2014辽宁ACM省赛)[通俗易懂]

    Graph(2014辽宁ACM省赛)

    2022年2月3日
    47

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号