使用BeautifulSoup遍历多个XML标签,提取字符串列表

3 投票
1 回答
1462 浏览
提问于 2025-04-18 06:44
# Sample XML file.
xml = """
<1 sno=1>
    <2>
        Some content
    </2>
    <2>
        Some other content
    </2>
    <2>
        Some more contents
    </2>
</1>
<1 sno=2>
<2>
        Some content
    </2>
    <2>
        Some other content
    </2>
    <2>
        Some more contents
    </2>
</1>
<1 sno=3>
<2>
        Some content
    </2>
    <2>
        Some other content
    </2>
    <2>
        Some more contents
    </2>
</1>
"""

这是一个示例的XML文件;我想处理所有的<1>标签。

  1. 首先,我需要找到所有的1标签,
  2. 其次,把内容提取成一个列表。我希望<2>能作为单独的列表元素。 比如,我希望得到一个像 ['<2>','一些内容','</2>' .....] 这样的列表,而不是像 ['<2>一些内容</2>' , ....] 这样的。

_

from bs4 import BeautifulSoup as BS

xml = BS(xml)
xmlList = []
for line in xml.1:
    xmlList.append(line)
print xmlList    

# To grab multiple '1' tags:
from bs4 import BeautifulSoup as BS

xml = BS(xml)
xmlList = []
for line in xml.findall('1'):
    xmlList.append(line)
print xmlList

显示的列表像 ['<2>一些内容</2>' , ....],这是我不想要的。

如果我使用 find_all() 语句来抓取所有的'1'标签,结果也是一样的。我该怎么解决这个问题呢?

1 个回答

0

那直接把最后一部分切掉再加到列表里怎么样呢?

for line in xml.findAll('1'):  #also should be findAll() vs findall()
    xmlList.append(line[:-4])

撰写回答