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

到此这篇关于python 中 lxml 的 etree 标签解析的文章就介绍到这了,更多相关python etree 标签内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python lxml中etree的简单应用

    我一般都是通过xpath解析DOM树的时候会使用lxml的etree,可以很方便的从html源码中得到自己想要的内容. 这里主要介绍一下我常用到的两个方法,分别是etree.HTML()和etree.tostrint(). 1.etree.HTML() etree.HTML()可以用来解析字符串格式的HTML文档对象,将传进去的字符串转变成_Element对象.作为_Element对象,可以方便的使用getparent().remove().xpath()等方法. 如果想通过xpath获取htm

  • Python3.5以上版本lxml导入etree报错的解决方案

    在python中安装了lxml-4.2.1,在使用时发现导入etree时IDE中报错Unresolved reference 其实发现,不影响使用,可以正常运行,对于我这种要刨根问底的人不搞明白怎么能罢休了,要保证代码不红 就研究了下源码,通过源码中可以发现,html中继承了etree 看下图这里也是为啥前面出红但还是能顺利执行了 那么我们使用的时候就得变换下了:如下使用, 哎谁让etree是二进制文件了,希望下一个版本会有好的改善,通过github看源码,发现是cpython写的编译成的二进制

  • 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 = etre

  • Python中实现switch功能实例解析

    前言 今天在学习python的过程中,发现python没有switch这个语法.于是就想在python中如何才能实现这个功能呢? 正文 本文中我们对switch的使用模拟为正常的数据库的增删改查操作的对应,如'select 对应'select action'等. 1.简单的if-else 正如我们所知,python中有if语句,而且当时学习C的时候,学到if-else时引出的的替代品就是switch,两者可以完美的互相替代,需要注意的是在python中else if简化成了elif.如下所示:

  • python中Tkinter实现分页标签的示例代码

    Tkinter实现UI分页标签显示: Input页,红色部分为当前Frame的位置,下半部分为第一页的子标签:三页标签的显示内容各不相同.实现分页显示的核心组件为Radiobutton,Radiobutton只有一个选项能够生效,使用参数indicatoron=0能够将Radiobutton显示为Button的形状,通过选定的Radiobutton将原有的Frame forget掉,同时,将预定的Frame pack,实现分页的效果.使用时要将更换的组件放入一个Frame中,定义一个函数进行选定

  • python中namedtuple函数的用法解析

    源码解释: def namedtuple(typename, field_names, *, rename=False, defaults=None, module=None): """Returns a new subclass of tuple with named fields. >>> Point = namedtuple('Point', ['x', 'y']) >>> Point.__doc__ # docstring for

  • 在Python中使用SimpleParse模块进行解析的教程

    与大多数程序员一样,我经常需要标识存在于文本文档中的部件和结构,这些文档包括:日志文件.配置文件.分隔的数据以及格式更自由的(但还是半结构化的)报表格式.所有这些文档都拥有它们自己的"小语言",用于规定什么能够出现在文档内. 我编写处理这些非正式解析任务的程序的方法总是有点象大杂烩,其中包括定制状态机.正则表达式以及上下文驱动的字符串测试.这些程序中的模式大概总是这样:"读一些文本,弄清是否可以用它来做些什么,然后可能再多读一些文本,一直尝试下去." 各种形式的解析

  • python中Pyqt5使用Qlabel标签进行视频播放

    目录 一.简介 二.基本用法 2.1 QLabel控件 2.2 QLabel常用的信号(事件) 三.QLabel播放视频 3.1 QTimer 3.2 代码 Pyqt5安装并配置到pycharm方法:教你如何用pycharm安装pyqt5及其相关配置 一.简介 QLabel是界面中的标签类,继承自QFrame类,提供文本和图像的显示,是一种展示控件. QLabel对象可以显示不可编辑的文本或图片,可以放置一个GIF动画,还可以被用作提示标记为其他控件. 纯文本.链接或富文本也可以显示在标签上.

  • python中enumerate的用法实例解析

    在python中enumerate的用法多用于在for循环中得到计数,本文即以实例形式向大家展现python中enumerate的用法.具体如下: enumerate参数为可遍历的变量,如 字符串,列表等: 返回值为enumerate类. 示例代码如下所示: import string s = string.ascii_lowercase e = enumerate(s) print s print list(e) 输出为: abcdefghij [(0, 'a'), (1, 'b'), (2,

  • python中利用xml.dom模块解析xml的方法教程

    一.什么是xml?有何特征? xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. 例子:del.xml <?xml version="1.0" encoding="utf-8"?> <catalog> <maxid>4</maxid> <login username="pytest" passwd='123456'> <cap

  • Python中的命令行参数解析工具之docopt详解

    前言 docopt 是一个开源的库,代码地址:https://github.com/docopt/docopt.它在 README 中就已经做了详细的介绍,并且还附带了很多例子可供学习,这篇文章也是翻译一下 README 中内容-- docopt 最大的特点在于不用考虑如何解析命令行参数,而是当你把心中想要的格式按照一定的规则写出来后,解析也就完成了. docopt的安装 docopt有很多种版本,分别支持不同的语言,最简答的docopt支持python脚本,docopt.java支持java脚

  • Python中if __name__ == '__main__'作用解析

    当你打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,现在就来介 绍一下它的作用. 模块是对象,并且所有的模块都有一个内置属性 __name__.一个模块的 __name__ 的值取决于您如何应用模块.如果 import 一个模块,那么模块__name__ 的值通常为模块文件名,不带路径或者文件扩展名.但是您也可以像一个标准的程序样直接运行模块,在这 种情况下, __name__ 的值将是一个特别缺省"__main__". //////

随机推荐