【发布时间】:2019-02-22 14:19:20
【问题描述】:
我在解析使用 BeautifulSoup 获得的 XML 时遇到了一些困难,尽管我已经阅读了文档,但我似乎无法让它与我的 XML 设置方式正常工作。
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xml" href="/static/atom.xsl"?>
<feed xmlns:s="server url here">
<!-- Feed elements>
<entry>
<!-- Other Elements -->
<content type="text/xml">
<s:dict>
<!-- Other keys. -->
<s:key name="sid">DATA I WANT HERE</s:key>
<!-- Other keys. -->
</s:dict>
<!-- Lots of other dicts here. -->
</content>
</entry>
<! -- Other entries -->
</feed>
我的目标是从属性为name 且值为sid 的所有s:key 中获取数据。 (即所有s:key 都有一个name,但每个<entry> 只有一个是sid 类型。
如何在我的数据中打印出sid 类型的相关s:key 之间的所有文本?
我试过的是:
print(tree.findAll('key', {'name'}))
还有:
for elem in tree.feed.entry.content.dict.key:
print(elem)
但显然这些都是有缺陷的,不能按我的意愿正常工作。
我如何完成我想要获得的?
【问题讨论】:
-
顺便说一句,xml 不需要 beautifulsoup。如果输入可能不像某些网页那样完全有效,那么漂亮的汤很有用。 xml文档通常是完美的,可以直接解析:docs.python.org/3.7/library/xml.etree.elementtree.html
-
@balki 很高兴知道,但是我在正确使用元素树方面遇到了麻烦,而且汤似乎更容易理解/使用。
标签: python xml python-3.x beautifulsoup xml-parsing