首页 > 其他分享 >解析库之lxml

解析库之lxml

时间:2022-10-10 15:55:05浏览次数:33  
标签:xpath lxml li item html print 解析 class

etree解析html

解析html字符串,将字符串传递给etree.HTML()方法:

解析html文件,传递文件路径和解析器:

xpath方法

html.xpath()方法参数为xpath规则,选取html中的元素,返回为封装好的element对象

注意:xpath按次序选择,次序从1开始

示例:

s = '''<div>
<ul>
<li class="item-0"><a href="link1.html"><span>first item</span></a></li>
<li class="item-1"><a href="link2.html"> second item</a></li>
<li class="item-inactive item-2" name="abc"><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="links.html">fifth item</a></li>
</ul> '''
html = etree.HTML(s)
result = etree.tostring(html)
print(result.decode('utf-8'))
print(html.xpath('//li/a'))
# 特定节点父结果的class属性
print(html.xpath('//a[@href="link4.html"]/../@class'))
print(html.xpath('//li[@class="item-1"]'))

# 元素内容
print(html.xpath('//li[@class="item-1"]/a/text()'))

# 多值属性无法只用一个值来确定元素,需要使用contains内置方法
print(html.xpath('//li[@class="item-2"]'))
print(html.xpath('//li[contains(@class,"item-2")]/a/text()'))

# 多个属性确定一个元素用and连接
print(html.xpath('//li[contains(@class,"item-inactive") and @name="abc"]'))

# 按次序选取
print(html.xpath('//li[1]/a/span/text()'))
print(html.xpath('//li[last()]/a/text()'))
print(html.xpath('//li[position()<3]/a/text()'))
print(html.xpath('//li[last()-2]/a/text()'))

# 节点轴选取
# 祖先节点轴
print(html.xpath('//li[1]/ancestor::*'))
print(html.xpath('//li[1]/ancestor::div'))
# 属性轴
print(html.xpath('//li[1]/attribute::*'))
# 直接子节点轴
print(html.xpath('//li[1]/child::a[@href="link1.html"]'))
# 子孙节点轴
print(html.xpath('//li[1]/descendant::span'))
# 当前节点之后的所有节点轴
print(html.xpath('//li[1]/following::*[2]'))
# 当前节点之后的同级节点轴
print(html.xpath('//li[1]/following-sibling::*'))

结果如下:

标签:xpath,lxml,li,item,html,print,解析,class
From: https://www.cnblogs.com/wy12148/p/16776013.html

相关文章

  • 不再只有Yolo,现在轻量级检测网络层出不穷(框架解析及部署实践)
    计算机视觉研究院专栏作者:Edison_GNanoDet总体而言没有特别多的创新点,是一个纯工程化的项目,主要的工作就是将目前学术界的一些优秀论文,落地到移动端的轻量级模型上。最后通......
  • ETCD Raft模块解析
    1.Raft简介raft是一个管理复制式日志的共识算法,它是通过复制日志的方式来保持状态机里的数据是最终一致的。 整体的一个运行描述图:  从图中可以看到由几部分组......
  • 如何实现汇川PLC和工业机器人的协议解析与数据采集?
    汇川是一家专注于工业自动化的设备制造商,具备一整套完善的产品与服务,涉及变频器、伺服系统、PLC、HMI触摸屏、电动汽车电机控制器、光伏逆变器等等,在制造业、新能源、环保节......
  • @网络通信及dns解析
    网络通信文章目录​​网络通信​​​​一.网络通信的实现​​​​二.通信实现的过程​​​​三.DNS域名解析​​​​1.dns的出现​​​​2.dns的作用​​​​3.dns的查询​......
  • 深入理解c11(c11新特性解析与应用) pdf
    高清扫描版下载链接:https://pan.baidu.com/s/1T2Zyh0PqNFRdllUIWmkcTQ点击这里获取提取码 ......
  • drf三大认证之权限源码解析
    1.认证,频率,权限的源码解读入口就是APIView源码的dispatch方法的三大认证,全局异常处理self.initial(request,*args,**kwargs)2.查看APIView的initial里面的三句代......
  • android download hosts 域名解析
    203.208.40.97dl.google.com203.208.40.33dl.l.google.com74.125.137.91dl-ssl.google.com......
  • ClickHouse(07)ClickHouse数据库引擎解析
    目录Atomic建表语句特性TableUUIDRENAMETABLESDROP/DETACHTABLESEXCHANGETABLESReplicatedMergeTreeinAtomicDatabaseMySQL创建数据库mysql与ClickHouse数据类型对......
  • 如何将域名解析到ip,都有哪些过程?
    对于网站拥有者来说,域名和IP地址是网页必不可少的两个结构,不仅仅需要保证域名的正常使用,每个网页的相对应IP地址也是比较重要的,这两者之间拥有很深的关系,当然区别也是比较......
  • nginx 入门解析
    OSI模型的前三层应用层:每一个应用程序自定义的协议表示层:数据的压缩与解压缩。图片的编码与解码会话层:会话管理(session)和网络验证。包括断点续传和服务......