python中的lxml模块
Python中自带了XML的模块,但是性能不太好,相比之下,LXML增加了很多实用的功能。
lxml中主要有两部分,
1) etree,主要可以用来解析XML字符串,
内部有两个对象,etree._ElementTree和etree._Element
etree.Element对象中包含的属性和方法:
属性:1)tag,返回该节点的名称:
print 'root.tag' 输出tag
2)text,设置该节点的文本:
root.text = 'hello world' 输出<root>hello world</root>
3)tail,在标签后边追加文本:
root.tail = 'hym' 输出<root>hello world</root>hym
方法:1)Element(string),创建一个Element对象:
root = etree.Element('root') 返回一个XML的节点,名称root
root = etree.Element('root', interesting='totally') 返回一个root节点,属性interesting = 'totally'
2) set(name,value),为已有的节点,添加属性,
root.set('hello', 'huhu') 增加一个属性hello = 'huhu'
3) get(string),返回属性值,
root.get('intersting') 返回‘totally’
4) keys(),返回所有的属性名,
root.keys() 返回interesting,hello
5) items(),返回字典,其中包含所有的属性,及其 value
for name,value in sorted(root.items()) 返回两对属性
6) 为该节点,添加子节点,
child1 = etree.SubElement(root, 'child')
7) 为该节点,删除子节点,
root.remove(child1)
8) getparent(),拿到父节点
child1.getparent().tag 返回root
etree允许,节点内部的子节点,认为是一个list,
print "len(root)" 返回root节点及其子节点的个数;
root.index(child2) 返回child2的索引值
child = root[0] 返回child1,允许索引访问
for child in root: 允许遍历
...
root.insert(0, etree.Element('child0')) 允许插入
root.append(etree.Element('child4')) 允许append
etree._Element对象是一颗xml的树,内部包含很多element的对象,
1)root.getroottree(),返回一个节点对应的树,root表示当前节点的tag,返回的是Tree类型的对象
2)getroot(),返回根节点,返回的是Element类型的对象
3)etree.ELementTree(root),从一个节点构建一颗tree,该节点,也就是根节点,
etree,Element和Tree类型的对象,都支持xpath的方法:
foo.xpath('//root')[0].tag
2) html,主要用来解析html,
etree.html(HTML)来解析html,并得到Element对象,也可以调用xpath来分析xml
xpath,可以实现节点和属性的快速查找:
xpath('//div[@attr = value]/text()') 返回该div节点,满足attr属性要求的,节点的文本
xpath('//div[@attr]/@attr') 返回该div节点,含有attr属性,的值
python中的lxml模块的更多相关文章
- 【Day3】5.Python中的lxml模块
import lxml.etree as le with open('edu.html','r',encoding='utf-8') as f: html = f.read() html_x = le ...
- Python中的random模块,来自于Capricorn的实验室
Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...
- Python中的logging模块
http://python.jobbole.com/86887/ 最近修改了项目里的logging相关功能,用到了python标准库里的logging模块,在此做一些记录.主要是从官方文档和stack ...
- Python中的random模块
Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...
- 浅析Python中的struct模块
最近在学习python网络编程这一块,在写简单的socket通信代码时,遇到了struct这个模块的使用,当时不太清楚这到底有和作用,后来查阅了相关资料大概了解了,在这里做一下简单的总结. 了解c语言 ...
- python中的StringIO模块
python中的StringIO模块 标签:python StringIO 此模块主要用于在内存缓冲区中读写数据.模块是用类编写的,只有一个StringIO类,所以它的可用方法都在类中.此类中的大部分 ...
- python中的select模块
介绍: Python中的select模块专注于I/O多路复用,提供了select poll epoll三个方法(其中后两个在Linux中可用,windows仅支持select),另外也提供了kqu ...
- Python中的re模块--正则表达式
Python中的re模块--正则表达式 使用match从字符串开头匹配 以匹配国内手机号为例,通常手机号为11位,以1开头.大概是这样13509094747,(这个号码是我随便写的,请不要拨打),我们 ...
- python中的shutil模块
目录 python中的shutil模块 目录和文件操作 归档操作 python中的shutil模块 shutil模块对文件和文件集合提供了许多高级操作,特别是提供了支持文件复制和删除的函数. 目录和文 ...
随机推荐
- [knowledge][ETA] Encrypted Traffic Analytics
思科ETA主页 https://www.cisco.com/c/en/us/solutions/enterprise-networks/enterprise-network-security/eta. ...
- 转:Java中子类是否可以继承父类的static变量和方法而呈现多态特性
原文地址:Java中子类是否可以继承父类的static变量和方法而呈现多态特性 静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法,关于static方法,声明 ...
- RMAN.DBMS_RCVCAT 版本错误处理
登录新装的catalog库准备注册数据库时报版本问题 rman target / catalog rman11g/rman2010#@rman Recovery Manager:Release 11. ...
- LeetCode 463 Island Perimeter 解题报告
题目要求 You are given a map in form of a two-dimensional integer grid where 1 represents land and 0 rep ...
- 《HTTP - https》
一:HTTP 缺点? - 明文通讯(也是最受诟病的一个缺点) - 不验证对方的身份(你说你是你?你怎么证明你是你呢?) - 无法验证报文的完整性,可能已经被篡改(在挨打的边缘,来回试探) 二:HTTP ...
- redis使用rdb恢复数据
redis中存在rdb备份和aof备份两种方式. 如果在redis多个节点发生雪崩时,我们往往使用定期冷备rdb或者aof文件,去恢复数据的方式,但往往数据量较大时rdb恢复更加的快速,毕竟aof保存 ...
- kubernetes的Kubelet
1. kubelet简介 在kubernetes集群中,每个Node节点都会启动kubelet进程,用来处理Master节点下发到本节点的任务,管理Pod和其中的容器.kubelet会在API Ser ...
- python获取指定目录下特定格式的文件名
之前一直用windows下的bat脚本获取一个目录下的指定格式的文件名,如下所示: dir *.jpg /b/s > train.set pause 十分简单,将这个bat文件放到你想要获取文件 ...
- 爬虫解析库——BeautifulSoup
解析库就是在爬虫时自己制定一个规则,帮助我们抓取想要的内容时用的.常用的解析库有re模块的正则.beautifulsoup.pyquery等等.正则完全可以帮我们匹配到我们想要住区的内容,但正则比较麻 ...
- MySQL中的数据类型以及完整性约束
数据类型 数据库mysql中也是分很多数据类型的,最常用的就是:数字类型.字符类型.日期类型.枚举与集合类型 一.数字类型: 默认都是有符号的,即正负号,若想无符号,在创建表时加unsigned.指定 ...