gpt4 book ai didi

python - 如何从 beautifulsoup4 中的标签获取命名空间信息?

转载 作者:行者123 更新时间:2023-12-04 08:06:54 25 4
gpt4 key购买 nike

我正在尝试解析一些强烈使用命名空间的 xml 文件。现在我正在使用 beautifulsoup4,大部分情况下一切顺利。不幸的是,我遇到了一些数据,其中某些标签可能具有相同的名称,但它们具有不同的命名空间说明符,因此理论上这应该没问题,因为漂亮的汤在某种程度上清楚地包含此信息:

from bs4 import BeautifulSoup

xml = """

<root
xmlns:nsa="http://www.dummynamespacea.com"
xmlns:nsb="http://www.dummynamespaceb.com"
>
<nsa:elem>information</nsa:elem1>
<nsb:elem>more information</nsb:elem2>

</root>

"""

soup = BeautifulSoup(xml, "xml")

print(soup)

<?xml version="1.0" encoding="utf-8"?>
<root xmlns:nsa="http://www.dummynamespacea.com" xmlns:nsb="http://www.dummynamespaceb.com">
<nsa:elem>information</nsa:elem>
<nsb:elem>more information</nsb:elem>
</root>

但是,如果我在遍历元素时打印元素的名称,则该信息不存在:

import re
for element in soup.find_all(re.compile(".*")):
print(element.name)
root
elem
elem

有没有办法在我遍历标记的 namespace 时获取有关它们的信息?

最佳答案

你要查找的是 element.namespace 或 '.prefix' 属性:

for element in soup.find_all(re.compile(".*")):
print(element.prefix, element.name)

None root
nsa elem
nsb elem

关于python - 如何从 beautifulsoup4 中的标签获取命名空间信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66181254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com