0%

看到了以前学lxml etree类的笔记,今天贴上去当做加强记忆吧

好久也没写py了,有点手生了,贴下来加深记忆,也不是很复杂的东西,就是自己以前结合资料做的笔记

读写操作

  • etree.fromstring( string )

    将 string 解析为 Element 或者 ElementTree 。

  • etree.parse( file )

    将文件或者是 file_like 对象解析为 ElementTree

    因为 parse() 一般解析整篇文档,字符串解析函数一般只解析片段。其中 file 还可以是 HTTP/FTP URL

  • XML( text ) / HTML( text )

    比较直接的对 XML 和 HTML 文档进行特定解析,可以修改解析器 parser 参数,其中 parser 可以由相应的 XMLParser() / HTMLParser() 函数生成

  • etree.tostring( elt )

    将一个 Element 或者 ElementTree 转换为 string 形式

    可选参数:pretty_print=False 表示是否格式化提高可读性;

    method=”xml” 选择输出后的文档格式

    可选参数有 xml 、html 、text

    encoding=None 表示以什么编码的字符串输出,在无 xml 文档声明情况下默认是 ASCⅡ

  • ElementTree.write( file )

    是 ElementTree 特有的方法,是将 ElementTree 写到 a file, a file-like object, or a URL (via FTP PUT or HTTP POST) 。可选参数和 tostring() 差不多

Element 的属性

  • .tag

元素的名称

  • .attrib

一个包含元素属性的字典,key 是属性名,value 是对应的值。

  • .text

Element 的文本均为直接子文本,不包含子元素中的文本,这其中又包含两部分 .text 和 .tail 。.text 是第一个子元素标签之前的,如果没有则为 None 。

  • .tail

.tail 为 Element 的关闭标签之后的文本,并且是在下一个兄弟子标签之前的部分。没有则为 None 。

Element 的方法

  • append( child )

添加一个新的子节点(可以是 Element 、Comment)到当前 Element 中。

  • clear()

调用该函数,将移除所有内容 .attrib 将被移除 .text 和 .tail 将被设置为 None 所有的子节点将被删除。

  • remove( child )

将子节点 child 从Element 中移除 ,如果child 不是 Element 的子节点,将会引发 ValueError 异常。

  • find( path )

从 Element 的子元素及后代元素中查找第一个符合 path 的 subelement 。如果没有返回 None 。

ElementPath 是 ElementTree 自带的一个 XPath-like 的路径语言,和 XPath 差不太多,主要区别是 ElementPath 能用 {namespace}tag,但是 ElementPath 不能使用值比较和函数。

  • findall( path )

返回一个匹配的 Element 的列表。

  • findtext( path, default=None )

返回第一个匹配元素的 .text 内容,如果存在匹配,但是没有 .text 内容,那么将返回一个空字符串,如果没有一个匹配的元素,那么将会返回一个 None ,但是有 default 参数,返回 default 所指定的。

  • get( key, default=None )

返回字符串形式的 属性 key 的值,没有返回 None 或者 default 指定的。

  • getchildren()

返回一个包含 Element 子元素的列表。

  • getiterator( tag=None, *tags )

返回元素的一个生成器,返回元素类别取决于参数 tag ,生成顺序是in document order (depth first pre-order) 深度优先的先根遍历。如果没有参数的话,则第一个就是元素本身。如果想使用一个高效的生成器,可以使用 .iter() 。

  • getroottree()

返回该元素的 ElementTree 。

  • iter( tag=None, *tags )

过滤特定标签,生成迭代器。默认情况下,iter() 迭代所有的节点,包括PI(处理指令) 、Comment(注释) 等,如果只想迭代标签元素,可以使用 Element factory 做参数e.iter(tag = etree.Element)。

  • iterfind( path )

迭代所有匹配 ElementPath 的 Element 。

  • itertext( tag=None, *tags, with_tail=True )

迭代 Element 元素的文本内容,with_tail 参数决定是否迭代子元素的 tail 。Element 的tail 不会进行迭代。

  • iterancestors( tag=None )

如果忽略参数,那么将会迭代所有先辈,加标签名可以只迭代该标签先辈。

  • iterchildren( reversed=False, tag=None )

通过设置 reversed=True 可以以反向的顺序迭代子元素。

  • itersiblings( preceding=False )

迭代 Element 之后的兄弟元素,可以通过设置 preceding=True 仅迭代 Element 之前的兄弟元素。

  • iterdescendants( tag=None )

同 iterancestors()

  • items()

返回由元素属性的键值所构成的( name, value)元组的列表。

  • keys()

返回一个没有特定顺序的元素属性名的列表。

  • set(A, V)

创建或者改变属性 A 的值为 V。

本文标题:看到了以前学lxml etree类的笔记,今天贴上去当做加强记忆吧

文章作者:墨妄

发布时间:2020年11月08日 - 23:27:57

最后更新:2020年11月08日 - 23:47:02

原始链接:http://meetu.top/2020/11/08/20201108-etree-python-.html/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。