如何使用beautifulsoup在嵌套标签结构中提取属性值?

时间:2012-07-17 00:01:49

标签: python html parsing beautifulsoup

我有一个类似于此的html文件:

<html>
...
<li class="not a user"> </li>
<li class="user">
 <a href="abs" ...> </a>
</li>
<li class="user">
 <a href="bss" ...> </a>
</li>
...
</html>

给出上面的输入我想用class =“user”解析li标签并获得href的值作为输出。这可能是使用python中的beautifulsoup ???

我的解决方案是:

data="the above html code snippet"
soup=BeautifulSoup(data)
listset=soup("li","user")
for list in listset:
   attrib_value=[a['href'] for a in list.findAll('a',{'href':True})]

显然我在某个地方有一个错误,它只列出了最后一个锚标记的href的属性值。

1 个答案:

答案 0 :(得分:2)

你的代码很好。 listset中有三个元素 - 并且attrib_value在循环的每次迭代中被覆盖,因此在程序结束时,它只包含来自listset的最后一个元素的href值,bss

请改为尝试保留所有值:

attrib_value += [a['href'] for a in list.findAll('a',{'href':True})]

并在循环(attrib_value = [])之前将attrib_value初始化为空列表。