作者VivianAnn (薇薇安安)
看板Python
标题[问题] 如何用python抓取XML中的data (ETREE)
时间Tue Feb 22 16:30:54 2022
各位好
本人有类似以下的XML档(output.xml)必须要用python来处理
希望可以撷取各个tag中的值
我的XML档中有namespace,内容如下:
<data xmlns="urn:ietf:params:ns:netconf:base:1.0">
<interfaces xmlns="http://namespace.net">
<interface>
<name>Interface0</name>
</interface>
<interface>
<name>Interface1</name>
</interface>
</interfaces>
</data>
查了一下网路,有xml.etree这个library可以用
以下是我的code
------------------------------------
from xml.etree import cElementTree as ET
tree = ET.ElementTree(file="output.xml")
root = tree.getroot()
nsmap = {'':'
http://namespace.net'} # namespace
for name in root.iterfind('./interfaces/interface/name', namespaces=nsmap):
print(name.text)
-----------------------------------------
这个code是可以跑的,但自己希望可以进一步实现:
只抓取Interface1,也就是第二个interface中name的值
我尝试过将'./interfaces/interface/name'改为'./interfaces/interface[2]/name'
不过这只有在XML中没有namespace时,才能成功抓取到Interface1
请问各版友,有人知道对於有namespace的xml,如果有重复的tag
要如何只抓第k个tag中的值?
谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 108.254.89.199 (美国)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1645518657.A.11A.html
1F:→ OrzOGC: 这可以用BS吧? 02/22 20:28
2F:→ VivianAnn: bs有尝试,感觉比较慢 02/22 22:27
3F:→ alvinlin: xmltodict 是 Python 中的一个模组 02/28 04:05
4F:推 coeric: 我曾经使用xml去做 当我後来用bs4去做 真的觉得是新天地 03/09 17:47