如何使用Python中的BeautifulSoup获取XML文件中所有具有相同名称的标签?

时间:2018-09-24 08:50:30

标签: python xml beautifulsoup xml-parsing tags

我正在使用的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 :(得分:1)

这应该有帮助。

演示:

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 :(得分:1)

这些行中的第二个实际上覆盖了第一个value

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

相反,请尝试以下操作:

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