當前位置:首頁 » 編程語言 » elementpython

elementpython

發布時間: 2024-12-01 14:12:50

『壹』 python lxml etree怎麼甩

lxml是Python語言中處理XML和HTML功能最豐富,最易於使用的庫。

lxml是libxml2和libxslt兩個C庫的Python化綁定,它的獨特之處在於兼顧了這些庫的速度和功能完整性,同時還具有Python API的簡介。兼容ElementTree API,但是比它更優越。

用libxml2編程就像是一個異於常人的陌生人的令人驚恐的擁抱,它看上去可以滿足你一切瘋狂的夢想,但是你的內心深處一直在警告你,你有可能會以最糟糕的方式遭殃,所以就有了lxml。



這是一個用lxml.etree來處理XML的教程,它簡單的概述了ElementTree API的主要概念,同時有一些能讓你的程序生涯更輕松的簡單的提高。


首先是導入lxml.etree的方式:

fromlxmlimportetree

為了協助代碼的可移植性,本教程中的例子很明顯可以看出,一部分API是lxml.etree在ElementTree API(由Fredrik Lundh 的ElementTree庫定義)的基礎上的擴展。

Element是ElementTree API的主要容器類,大部分XML tree的功能都是通過這個類來實現的,Element的創建很容易:

root=etree.Element("root")

element的XML tag名通過tag屬性來訪問

>>>printroot.tag
root



許多Element被組織成一個XML樹狀結構,創建一個子element並添加進父element使用append方法:

>>>root.append(etree.Element("和耐child1"))



還有一個更簡短更有效的方法:the SubElement,它的參數和element一樣,但是需要父element作為第一個參數:

>>>child2=etree.SubElement(root,"child2")
>>>child3=etree.SubElement(root,"child3")



可以序列化你創建的樹:

>>>print(etree.tostring(root,pretty_print=True))
<root>
<child1/>
<child2/>
<child3/>
</root>



為了更方便直胡棚野觀的訪問這些子節點,element模仿了正常的Python鏈:

>>>child=root[0]>>>print(child.tag)
child1
>>>print(len(root))
>>>root.index(root[1])#lxml.etreeonly!
>>>children=list(root)>>>forchildinroot:...print(child.tag)child1child2
child3
>>>root.insert(0,etree.Element("child0"))>>>start褲喊=root[:1]>>>end=root[-1:]>>>print(start[0].tag)child0>>>print(end[0].tag)child3


還可以根據element的真值看其是否有孩子節點:

ifroot:#thisnolongerworks!
print("Therootelementhaschildren")


用len(element)更直觀,且不容易出錯:

>>>print(etree.iselement(root))#testifit'ssomekindofElement
True
>>>iflen(root):#testifithaschildren
...print("Therootelementhaschildren")
Therootelementhaschildren



還有一個重要的特性,原文的句子只可意會,看例子應該是能看懂什麼意思吧。

>>>forchildinroot:...print(child.tag)child0child1child2child3>>>root[0]=root[-1]#移動了element>>>forchildinroot:...print(child.tag)child3child1child2>>>l=[0,1,2,3]>>>l[0]=l[-1]>>>l[3,1,2,3]
>>>rootisroot[0].getparent()#lxml.etreeonly!.etree,'sstandardlibrary:>>>fromimportdeep>>>element=etree.Element("neu")>>>element.append(deep(root[1]))>>>print(element[0].tag)child1>>>print([c.tagforcinroot])['child3','child1','child2']



XML支持屬性,創建方式如下:

>>>root=etree.Element("root",interesting="totally")
>>>etree.tostring(root)
b'<rootinteresting="totally"/>'



屬性是無序的鍵值對,所以可以用element類似於字典介面的方式處理:

>>>print(root.get("interesting"))
totally
>>>print(root.get("hello"))
None
>>>root.set("hello","Huhu")
>>>print(root.get("hello"))
Huhu
>>>etree.tostring(root)
b'<rootinteresting="totally"hello="Huhu"/>'
>>>sorted(root.keys())
['hello','interesting']
>>>forname,valueinsorted(root.items()):
...print('%s=%r'%(name,value))
hello='Huhu'
interesting='totally'

如果需要獲得一個類似dict的對象,可以使用attrib屬性:

>>>attributes=root.attrib
>>>print(attributes["interesting"])
totally
>>>print(attributes.get("no-such-attribute"))
None
>>>attributes["hello"]="GutenTag"
>>>print(attributes["hello"])
GutenTag
>>>print(root.get("hello"))
GutenTag

既然attrib是element本身支持的類似dict的對象,這就意味著任何對element的改變都會影響attrib,反之亦然。這還意味著只要element的任何一個attrib還在使用,XML樹就一直在內存中。通過如下方法,可以獲得一個獨立於XML樹的attrib的快照:

>>>d=dict(root.attrib)
>>>sorted(d.items())
[('hello','GutenTag'),('interesting','totally')]

『貳』 python抓取chrome中element的body內容

您要問的是python抓取chrome中element的body內容的步驟是什麼?步驟如下:。安宏基彎裝selenium庫,可以通過pip命令進行安裝,使蔽悶用selenium庫打開Chrome瀏覽器,並進入鋒孝目標網站。
1、使用selenium庫中的find_element_by_xpath()方法來獲取目標element,可以關閉Chrome瀏覽器,並對獲取到的body內容進行處理或存儲

『叄』 python etree element類 實例不能動態增加屬性

tree=etree.parse("xxx.xml")
root=tree.getroot()
root.set('myattr',"123")
print(root.attrib)

熱點內容
騰訊雲伺服器手機端掛游戲 發布:2024-12-01 18:44:24 瀏覽:598
uc蘋果版如何同步安卓的 發布:2024-12-01 18:43:15 瀏覽:189
配置到頂怎麼設置 發布:2024-12-01 18:27:40 瀏覽:331
mysql資料庫恢復工具 發布:2024-12-01 18:22:23 瀏覽:315
光影精靈七配置怎麼樣 發布:2024-12-01 18:02:31 瀏覽:638
c語言區分大小寫 發布:2024-12-01 17:49:36 瀏覽:325
亞服七騎士腳本 發布:2024-12-01 17:48:36 瀏覽:554
ftp刪除文件的命令 發布:2024-12-01 17:27:54 瀏覽:450
練字密碼練字效果如何 發布:2024-12-01 17:27:49 瀏覽:301
java如何輸入字元串 發布:2024-12-01 17:24:45 瀏覽:167