Вы можете использовать find_all
, который вернет список всех найденных элементов, соответствующих этим элементам.Возможно, вы сможете просто напрямую позвонить на soup.find_all('media_type_id')
, но я не уверен во всей вашей структуре XML, и если вам нужно убедиться, что она находится под media_type
или нет, поэтому мы предполагаем, что вы должны проверить, является ли онапод media_type
from bs4 import BeautifulSoup
xml = """
<allowed_media_types>
<media_type>
<media_type_id>3</media_type_id>
<media_type_name>Hello World</media_type_name>
<media_type_category_id>1</media_type_category_id>
<media_type_category_name>Selfies</media_type_category_name>
</media_type>
<media_type>
<media_type_id>55</media_type_id>
<media_type_name>Bye World</media_type_name>
<media_type_category_id>100</media_type_category_id>
<media_type_category_name>All Types</media_type_category_name>
</media_type>
</allowed_media_types>
"""
soup = BeautifulSoup(xml, 'xml')
print([node.find('media_type_id').text for node in soup.find_all('media_type')])
Вы также можете использовать селекторы и указать тег media_type
с прямым потомком (>
) media_type_id
:
from bs4 import BeautifulSoup
xml = """
<allowed_media_types>
<media_type>
<media_type_id>3</media_type_id>
<media_type_name>Hello World</media_type_name>
<media_type_category_id>1</media_type_category_id>
<media_type_category_name>Selfies</media_type_category_name>
</media_type>
<media_type>
<media_type_id>55</media_type_id>
<media_type_name>Bye World</media_type_name>
<media_type_category_id>100</media_type_category_id>
<media_type_category_name>All Types</media_type_category_name>
</media_type>
</allowed_media_types>
"""
soup = BeautifulSoup(xml, 'xml')
print([node.text for node in soup.select('media_type > media_type_id')])
Вывод:
['3', '55']