Как получить все теги с одинаковыми именами внутри XML-файла, используя BeautifulSoup в Python? - PullRequest
0 голосов
/ 24 сентября 2018

XML, который я использую, имеет следующий формат -

<head>
  <body>
  Sample Text1
  </body>
  <body>
  Sample Text2
  </body>
</head>

Я пытаюсь собрать все теги с тегом <body> в одну переменную final_value.Для этого я использую код ниже -

soup = Soup(target_xml, 'html.parser') 
for value in soup.find_all("body"):
    final_value = value.prettify()

Используя это, я получаю только один тег <body> внутри переменной final_value.Как я могу получить оба тега внутри переменной, чтобы вывод был таким -

>> final_value
      <body>
      Sample Text1
      </body>
      <body>
      Sample Text2
      </body>

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Вы по существу перезаписываете первое value вторым в следующих строках:

for value in soup.find_all("body"):
    final_value = value.prettify()

Вместо этого попробуйте что-то вроде этого:

for value in soup.find_all("body"):
        final_value += value.prettify()
0 голосов
/ 24 сентября 2018

Это должно помочь.

Демо:

from bs4 import BeautifulSoup


target_xml = """<head>
  <body>
  Sample Text1
  </body>
  <body>
  Sample Text2
  </body>
</head>"""

final_value = ""
soup = BeautifulSoup(target_xml, 'html.parser') 
for value in soup.find_all("body"):
    final_value += value.prettify()

print(final_value)

Вывод:

<body>
 Sample Text1
</body>
<body>
 Sample Text2
</body>
...