Использование BeautifulSoup для анализа XML с тегами, содержащими двоеточие - PullRequest
0 голосов
/ 22 февраля 2019

Я немного пытался разобрать XML, полученный с помощью BeautifulSoup, и, хотя я прочитал документы, я не могу заставить его работать должным образом с настройкой моего 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)

, но, очевидно, это недостатки и неработать должным образом, как я хочу.

Как мне добиться того, что я хотел бы получить?

1 Ответ

0 голосов
/ 22 февраля 2019

Попробуйте следующий код:

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

Вывод: -

DATA I WANT HERE
...