Разбор XML-файла с использованием Beautifulsoup4 - PullRequest
0 голосов
/ 12 октября 2018

Я хочу извлечь тег материала только из имени профиля = "4".Ниже я написал код, который извлекает все под профилем name = "4", но есть ли способ собрать все теги материала или мне нужно было бы использовать split для получения текста внутри тега материала.Имеющийся у меня xml-файл намного длиннее, поэтому использование split возможно, но для анализа данных потребуется гораздо больше времени.

Это код Python

import bs4 as bs

# opens xml file and allows bs4 to parse xml file
xml_file = open('file.xml')
soup = bs.BeautifulSoup(xml_file, 'html.parser')

#extracts and prints all tags under profile name = "4"
stuff = soup.find_all('profile', {'name':"4"})
print stuff

Это xml-файл.и это называется file.xml.Я хочу извлечь теги материала из профиля name = "4"

<profiles>
    <profile name="1">
        <content>apple</content>
    </profile>
    <profile name="2">
        <content>peas</content>
    </profile>
    <profile name="3">
        <stuff>bear</stuff>
    </profile>
    <profile name="4">
        <content>cat</content>
        <data>
            <stuff>fish</stuff>
        </data>
        <stuff>hat</stuff>
    </profile>
</profiles>

1 Ответ

0 голосов
/ 12 октября 2018

Сделайте то же самое для внутренних тегов

print([i.find_all('stuff') for i in stuff])

Если вам просто нужны данные внутри тегов

for i in stuff:
    for x in i.find_all('stuff'):
        print(x.next) 

Вывод:

fish
hat
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...