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>
0
Vishal 24 Сен 2018 в 11:50

2 ответа

Лучший ответ

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

< Сильный > Демо :

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>
1
Rakesh 24 Сен 2018 в 09:14

Вы по существу перезаписываете первый value вторым в этих строках:

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

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

for value in soup.find_all("body"):
        final_value += value.prettify()
1
Vineet Chaurasiya 24 Сен 2018 в 09:41