提问人:Hamza Ahmed 提问时间:3/15/2023 更新时间:3/15/2023 访问量:37
在 Python 上使用 BeautifulSoup 从 XML 文件中提取内容
Extracting contents from an XML file with BeautifulSoup on Python
问:
我有一个这样的XML结构:
<Trainers>
<Trainer name="VisitorID" value=" NPRoiuKL213kiolkm2231"/>
<Trainer name="VisitorNumber" value="BR-76594823-009922"/>
<Trainer name="ServerIndex" value="213122"/>
<Trainer name="VisitorPolicyID" value="ETR1234123"/>
</Trainers>
我想根据 Trainer 名称提取值。所以基本上是这样:
NPRoiuKL213kiolkm2231
从 、 从 等。.VisitorID
BR-76594823-009922
VisitorNumber
如果可能的话,我也想看看我是否可以提取。<Trainers>
我可以在 Pandas 上使用 '' 执行此操作并获取一个表,但我想单独获取这些值,以便我可以验证从 Pandas 创建的表。read_xml
这是我尝试过的:
soup = BeautifulSoup(Trainee.xml, 'xml')
soup.find_all({"Trainer name": "VisitorID"})
soup.find_all({"Trainer name": "VisitorNumber"})
soup.find_all({"Trainer name": "ServerIndex"})
soup.find_all({"Trainer name": "VisitorPolicyID"})
我期望这能起作用,但这些给了我空数组,
我在这里遗漏了什么吗?当我通过 Pandas 解析它时,我得到了一个合适的表,但单独我得到的是一个空数组。[]
read_xml
任何帮助将不胜感激!
非常感谢!
答:
0赞
Andrej Kesely
3/15/2023
#1
如果我理解正确的话,你想得到所有,并从中得到所有/对:<Trainers>
name
value
from bs4 import BeautifulSoup
xml_doc = """\
<Trainers>
<Trainer name="VisitorID" value=" NPRoiuKL213kiolkm2231"/>
<Trainer name="VisitorNumber" value="BR-76594823-009922"/>
<Trainer name="ServerIndex" value="213122"/>
<Trainer name="VisitorPolicyID" value="ETR1234123"/>
</Trainers>"""
soup = BeautifulSoup(xml_doc, "xml")
for item in soup.select("Trainers"):
for trainer in item.select("Trainer"):
print(trainer["name"], trainer["value"])
指纹:
VisitorID NPRoiuKL213kiolkm2231
VisitorNumber BR-76594823-009922
ServerIndex 213122
VisitorPolicyID ETR1234123
如果要从数据构造数据帧,可以使用以下示例:
df = pd.DataFrame(
[
{t["name"]: t["value"] for t in item.select("Trainer")}
for item in soup.select("Trainers")
]
)
print(df)
指纹:
VisitorID VisitorNumber ServerIndex VisitorPolicyID
0 NPRoiuKL213kiolkm2231 BR-76594823-009922 213122 ETR1234123
评论
0赞
Hamza Ahmed
3/16/2023
非常感谢您的回答!这真的很有帮助!我只想问一个关于这个问题的附加问题。因此,我想根据培训师名称检索值。我想在 BeautifulSoup 中输入“VisitorID”,并希望将“NPRoiuKL213kiolkm2231”作为输出返回。你知道我可以对这个答案进行什么更改来得到这个吗?非常感谢!
评论