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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • dubbo入门详解[通俗易懂]

    dubbo入门详解[通俗易懂]dubbo分布式系统简介发展演变RPCdubbo核心概念搭建dubbo分布式系统简介“分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统”分布式系统(distributed system)是建立在网络之上的软件系统。随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。发展演变单一应用架构当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时

    2022年8月8日
    2
  • 怎么使用Java 8 Stream将List(Object)转成List(Map(String, Object))?

    怎么使用Java 8 Stream将List(Object)转成List(Map(String, Object))?问题描述:有一个用户列表List&lt;User&gt;,须将每个User部分字段提取出来,重新放入一个Map中,然后将生成的Map放入List中。原来代码如下:publicstaticList&lt;Map&lt;String,Object&gt;&gt;toListMap(List&lt;User&gt;userList){List&lt;Map&lt;Stri…………

    2022年9月3日
    3
  • 96 年美女胜出!那个有关“猪脸识别”的比赛决出冠军啦

    96 年美女胜出!那个有关“猪脸识别”的比赛决出冠军啦点击上方“程序员小灰”,选择“置顶公众号”有趣有内涵的文章第一时间送达!还记得前段时间风靡技术界的“猪脸识别”吗?据了解,在知乎上与此有关的仅仅一个问题的浏览量就超过了35万,”猪脸识别”是JDD-2017京东金融全球数据探索者大赛的四大赛题之一,自从京东金融JDD大赛启动,就掀起了好大一波关注。而最近,这个与“猪脸识别”有关的JDD—2017京东金融全球数据探索者大赛经过多轮

    2022年6月21日
    25
  • 市场上十块钱买一个随身WiFi使用技术手段,插卡流量不限速不限量?

    市场上十块钱买一个随身WiFi使用技术手段,插卡流量不限速不限量?前几天在逛某论坛,发现有人在薅随身WiFi,而随身WiFi竟然是安卓系统,能进系统界面。跟风买了一个来折腾。

    2022年6月7日
    66
  • linux查看cuda版本「建议收藏」

    linux查看cuda版本「建议收藏」1.cat/usr/local/cuda/version.txt2.或者nvcc-v

    2022年6月11日
    58
  • VScode常用插件_AE必备插件

    VScode常用插件_AE必备插件这篇博客主要是我使用vscode过程中的插件汇总,使用了这么长时间,总想有个总结,也方便日后查看,这里我将我使用的插件分为基础、框架、工具三个类型。官网地址VSCode插件官网地址,里面有很多的插件可以使用。基础插件这部分插件主要是和html、css、js有关的。htmlCSSSupport这个插件支持以下语言,提供基础的语法知识编写辅助。这是插件地址htmllarav…

    2022年9月30日
    0

发表回复

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

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