使用beautifulsoup和python提取标记信息

时间:2012-05-09 17:52:05

标签: python xml parsing beautifulsoup

说我有一些类似

的xml
<item name=bread weight="5" edible="yes">
<body> some blah </body>
<item>

<item name=eggs weight="5" edible="yes">
<body> some blah </body>
<item>

<item name=meat weight="5" edible="yes">
<body> some blah </body>
<item>

我想使用漂亮的汤将每个项目的名称存储在列表中

这是迄今为止的尝试:

names =list()

for c in soup.findAll("item"):
    #get name from the tag
        names.append(name i got from tag)

此方法非常适用于在标记之间提取文本。

我已经尝试复制用于提取链接<a href="www.blah.com">的方法,但它似乎不起作用。

如何将名称信息存储在列表中? (其他列表包含正文文本,因此出于关联性原因,索引必须一致)。

非常感谢

1 个答案:

答案 0 :(得分:2)

使用dict(item.attrs).get('name')获取名称。

您遇到问题,因为<item>应该是一个结束标记,但它是一个开始标记,因此您得到6个匹配而不是3.如果您对文本有任何控制权,请使用结束标记避免这种情况。

以下是完整的代码段按预期工作:

names = list()

for item in soup.findAll('item'):
    name = dict(item.attrs).get('name')
    if name is not None:
        names.append(name)