python - 如何从 beautifulsoup4 中的标签获取命名空间信息?
问题描述
我正在尝试解析一些强烈使用名称空间的 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
or '.prefix' 属性element
:
for element in soup.find_all(re.compile(".*")):
print(element.prefix, element.name)
None root
nsa elem
nsb elem
推荐阅读
- asp.net-mvc - Gzip CSS 压缩 ASP.NET MVC
- java - 在 for loop 中进行改造调用,java.lang.OutOfMemoryError:
- javascript - 为什么我的 react-native 应用程序不能从它自己的 react-native-static-server 获取?
- kubernetes - terraform 如何将文件作为 helm_release 的值传递以创建配置映射
- ios - 在 Firemonkey 的 IOS 上写入文件时出现问题
- excel - Excel,Visual Basic 循环
- javascript - Tailwindcss,无法在后台获取我想要的图像到底部
- sublimetext3 - Sublime Text 不会安装 EasyClangComplete
- assembly - 汇编语言程序查找数组中的最大数
- selenium - 从列表中清除空值 - 机器人框架