无法从某些元素中获取名称

时间:2018-01-18 09:44:49

标签: python python-3.x beautifulsoup

我写了一个脚本来从下面粘贴的元素中获取食物名称,但我找不到任何方法来获取名称。我不愿意贬低这些价值观。有什么方法可以从下面的元素中获得食物名称吗?

这是我到目前为止所尝试的:

from bs4 import BeautifulSoup

content="""
<foods>
  <apple>green</apple>
  <strawberry>red</strawberry>
  <banana>yellow</banana>
</foods>
"""
soup = BeautifulSoup(content,"lxml")
data = [item for item in soup.select("foods")]
print(data)

如果我按原样运行我的脚本,它会生成content中可用的完全相同的元素。

输出我期待:

apple,strawberry,banana

2 个答案:

答案 0 :(得分:2)

试试这个:

>>> data = [x.name for x in soup.find('foods').findChildren()]
>>> data
['apple', 'strawberry', 'banana']

我想这是不言自明的。

答案 1 :(得分:1)

由于您的内容采用XML格式,因此您可以使用xml.etree.ElementTree模块从内容中提取数据,如下所示:

import xml.etree.ElementTree as ET
content="""
<foods>
     <apple>green</apple>
     <strawberry>red</strawberry>
     <banana>yellow</banana>
</foods>
"""
foods = ET.fromstring(content)
for food in foods:
    print(food.tag)
# Output: apple,strawberry,banana