说我有一些类似
的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">
的方法,但它似乎不起作用。
如何将名称信息存储在列表中? (其他列表包含正文文本,因此出于关联性原因,索引必须一致)。
非常感谢
答案 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)