python 中 lxml 的 etree 标签解析
作者:autofelix 发布时间:2023-02-26 02:59:37
标签:python, lxml,etree,标签
一、安装
pip install lxml
二、创建标签
from lxml import etree
root = etree.Element('root')
三、添加子节点
from lxml import etree
root = etree.Element('root')
span = etree.SubElement(root, 'span')
四、删除子节点
from lxml import etree
root = etree.Element('root')
span = etree.SubElement(root, 'span')
root.remove(span)
五、删除所有子节点
from lxml import etree
root = etree.Element('root')
root.clear()
六、操作子节点
from lxml import etree
root = etree.Element('root')
span = etree.SubElement(root, 'span')
# 获取标签数
len(root)
# 获取标签索引号,如果有多个相同标签的话,可以区分
root.index(span)
# 按位置插入
root.insert(0, etree.Element('p'))
# 尾部添加
root.append(etree.Element('strong'))
七、获取父节点
获取标签父节点的两种方法:
from lxml import etree
root = etree.Element('root')
span = etree.SubElement(root, 'span')
# 获取父节点方法一
span.getparent().tag
# 获取父节点方法二,用列表获取子节点,再获取父节点
root[0].getparent().tag
八、创建属性
from lxml import etree
root = etree.Element('root')
root.set('title', '这是一个root标签')
九、获取属性
获取属性的三种方法
from lxml import etree
root = etree.Element('root')
# 获取属性方法一
root.get('title')
# 获取属性方法二,参考字典的操作
root.keys(),root.values(),root.items()
# 获取属性方法三,直接拿到属性存放的字典
root.attrib
十、设置标签文本
添加文本和追加文本
from lxml import etree
root = etree.Element('root')
# 标签内添加文本
root.text='i am autofelix'
# 标签后追加文本
root.tail = 'i am autofelix'
十一、xpath方法
from lxml import etree
root = etree.Element('root')
word = root.xpath('//text()')
word[0].getparent().tag
十二、判断文本类型
from lxml import etree
root = etree.Element('root')
word = root.xpath('//text()')
# 是否是text文本
word.is_text
# 是否是tail文本
word.is_tail
十三、字符串解析
from lxml import etree
html = etree.fromstring('<root>autofelix</root>')
html.tag
etree.tostring(html)
十四、XML解析
from lxml import etree
html = etree.XML('<root>autofelix</root>')
html.tag
etree.tostring(html)
十五、去除XML中的空行
from lxml import etree
# 去除xml文件里的空行
parser= etree.XMLParser(remove_blank_text=True)
root = etree.XML('<root> auto felix </root>', parser)
print etree.tostring(root)
十六、HTML解析
HTML方法,如果没有<html>和<body>标签,会自动补上
from lxml import etree
html = etree.HTML('<root>autofelix</root>')
etree.tostring(html)
十七、搜索和定位
from lxml import etree
root = etree.XML('<root><a class="uname">i am autofelix<b/><c/><b/></a></root>')
# findall操作返回列表
root.findall('a')[0].text
# find操作就相当与找到了这个元素节点,返回匹配到的第一个元素
root.find('.//a').text
# 配合列表解析
[ b.text for b in root.findall('.//a') ]
# 根据属性查询
root.findall('.//a[@class]')[0].tag
来源:https://blog.51cto.com/autofelix/5150324


猜你喜欢
- 前言当我们运行测试函数时,我们希望确保测试函数在运行结束后,可以自己清理掉对环境的影响。这样的话,它们就不会干扰任何其他的测试函数,更不会日
- 本文实例为大家分享了element跨分页操作选择的具体代码,供大家参考,具体内容如下业务需求:在批量导出或者批量删除的时候会涉及到跨分页导出
- 导入所需库%matplotlib inlineimport sympyimport numpy as npimport matplotlib
- 前言最近公司为客户重新部署了一套新环境,由我来完成了基础环境的配置,配置过程中总结了一些经验,分享给各位园友使用 curl 命令检查网络拿到
- 1. 使用while循环输出1 2 3 4 5 6 8 9 10count=0while count <10:count+=1prin
- 如下所示:解读: transpose( ) 方法的参数是一个 由 轴编号(轴编号自0 开始) 序列构成的 元组。开始时,数组的轴编号序列是默
- 目录问题复现隐式转换总结参考问题在工作中发现,有一个接口只执行一条SQL查询语句,并且SQL明明使用了主键列,但是速度很慢。在MySQL中E
- 为什么需要垃圾回收(GC)程序和人一样,生活时间长了会产生垃圾,程序在运行过程中也会产生垃圾,垃圾积攒过多后,会导致程序运行速度变慢。在Ja
- 1、表示乘号2、表示倍数,例如:def T(msg,time=1): print((msg+' ')*time)
- 颜色目标检测就是根据物体的颜色快速进行目标定位。使用cv2.inRange函数设定合适的阈值,即可以选出合适的目标。建立项目colordet
- 本文实例讲述了Python本地与全局命名空间用法。分享给大家供大家参考。具体如下:x = 1def fun(a): b=3 &n
- 如下所示:data = { "北京":{ "昌平":{"沙河":[&
- 这是一条颠覆常规的插入方法,一条INSERT语句可以完成向多张表的插入任务。小小地展示一下这种插入方法。1.创建表T并初始化测试数据,此表作
- 首先要介绍的是 Python Imaging Library,使用方法如下:from PIL import Imagefrom PIL.Ex
- 一直以来,JS前端代码因为必须经过IE明文解析,某些加密的JS如:JScript.Encode也因为树大招风,早就被人破解了。还有些加密的手
- 这篇文章主要介绍了调试Django时打印SQL语句的日志代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
- 本文借鉴于张广河教授主编的《数据结构》,对其中的代码进行了完善。从某源点到其余各顶点的最短路径Dijkstra算法可用于求解图中某源点到其余
- 其实这个东西没什么技术含量,就是给大家提供一个给表格加滚动条的思路。运行代码框<html><head><tit
- JS操作二进制很麻烦,而且一直没有一个好的无损压缩工具来实现纯文本的压缩。所以钻研了一段时间的gzip,后来发现还是仅用 LZ77 比较容易
- 本文实例讲述了laravel框架中路由设置,路由参数和路由命名。分享给大家供大家参考,具体如下:laravel中必须先配置路由,才能使用。不