使用BeautifulSoup用包含冒号的标记解析XML

问题描述 投票:0回答:1

我正在努力解析使用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>

我的目标是从属性s:key获取所有name的数据,其值为sid。 (即所有s:key都有一个name,但每个<entry>只有一个是sid类型。

如何在我的数据中打印出s:key类型的相关sid之间的所有文本?

我试过的是:

print(tree.findAll('key', {'name'}))

以及:

for elem in tree.feed.entry.content.dict.key:
    print(elem)

但显然这些都是有缺陷的,并且不能按照我的要求正常工作。

我如何完成我想要获得的东西?

python xml python-3.x beautifulsoup xml-parsing
1个回答
1
投票

请尝试以下代码:

soup = bs4.BeautifulSoup(html_doc, 'lxml')
elements = soup.findAll("s:key", {"name" : "sid"})
for lele in elements:
    print(lele.text)

输出: -

DATA I WANT HERE
© www.soinside.com 2019 - 2024. All rights reserved.