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模块的更多相关文章

  1. 【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 ...

  2. Python中的random模块,来自于Capricorn的实验室

    Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...

  3. Python中的logging模块

    http://python.jobbole.com/86887/ 最近修改了项目里的logging相关功能,用到了python标准库里的logging模块,在此做一些记录.主要是从官方文档和stack ...

  4. Python中的random模块

    Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...

  5. 浅析Python中的struct模块

    最近在学习python网络编程这一块,在写简单的socket通信代码时,遇到了struct这个模块的使用,当时不太清楚这到底有和作用,后来查阅了相关资料大概了解了,在这里做一下简单的总结. 了解c语言 ...

  6. python中的StringIO模块

    python中的StringIO模块 标签:python StringIO 此模块主要用于在内存缓冲区中读写数据.模块是用类编写的,只有一个StringIO类,所以它的可用方法都在类中.此类中的大部分 ...

  7. python中的select模块

    介绍: Python中的select模块专注于I/O多路复用,提供了select  poll  epoll三个方法(其中后两个在Linux中可用,windows仅支持select),另外也提供了kqu ...

  8. Python中的re模块--正则表达式

    Python中的re模块--正则表达式 使用match从字符串开头匹配 以匹配国内手机号为例,通常手机号为11位,以1开头.大概是这样13509094747,(这个号码是我随便写的,请不要拨打),我们 ...

  9. python中的shutil模块

    目录 python中的shutil模块 目录和文件操作 归档操作 python中的shutil模块 shutil模块对文件和文件集合提供了许多高级操作,特别是提供了支持文件复制和删除的函数. 目录和文 ...

随机推荐

  1. swf 文件解析

    public class TagTypes     {         // Flash 1 tags         public static const TAG_END:uint = 0;    ...

  2. day4_函数简单介绍

    一.函数是什么? 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,编程中的函数在英文中也有很多不同的叫法.在BASIC中叫做subroutine(子过程或子程序),在Pasc ...

  3. 嵌套表用法详解(PLSQL)

    嵌套表 嵌套表是一种类似于索引表的结构,也可以用于保存多个数据,而且也可以保存复合类型的数据 嵌套表指的是一个数据表定义事同时加入了其他内部表的定义,这一概念是在oracle 8中引入的,它们可以使用 ...

  4. es6学习笔记入门总结

    1.let const block 作用域 let 代替var 来声明块级作用域,没有变量提升,只在块内有作用 const 可以声明一个常量,类似于指针,指向某一个引用,这个常量并非一成不变的,但是不 ...

  5. LeetCode 824 Goat Latin 解题报告

    题目要求 A sentence S is given, composed of words separated by spaces. Each word consists of lowercase a ...

  6. java 集合(五)MapDemo

    package cn.sasa.demo3; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedH ...

  7. debian下配置nginx缓存

    root权限下 新建/usr/nginx/cache/webpages目录 在/etc/nginx/sites-available下找到自己所需配置的文件,打开文件后在开头加上proxy_cache_ ...

  8. 对线程发送signal

    学习对线程 发送 signal #include <stdio.h> #include <stdlib.h> #include <string.h> #includ ...

  9. FPGA设计中的异步复位、同步释放思想

    1.一个简单的异步复位例子: module test( input clk, input rst_n, input data_in, output reg out ); always@(posedge ...

  10. bat处理打开关闭exe

    @echo off rem rem 注释 tastkill /f /im a.exe cd %CD% %CD:~0,1%: cd  %Cd%b start %CD%a.exe cd .. %CD:~0 ...