BeautifulSoup:提取HTML标记属性

时间:2012-07-17 09:18:48

标签: python html beautifulsoup

是否有办法仅在text=True未指定标记的情况下获取HTML标记属性。

示例:

html=<p class="c4">SOMETEXT</p>

我能做到:

[tag.attrs for tag in soup.findAll('p')]
>>> [[(u'class', u'c1')]]

有办法吗?

[text.attrs for text in soup.findAll(text=True)]

帮助很多!

2 个答案:

答案 0 :(得分:3)

认为你想要这个,因为问题已得到澄清:

[tag.attrs for tag in soup.findAll(True) if tag.string]

.findAll(True)会在文档中返回所有标记,因此即使它为空,它们也会有.attr,如果标记包含.string内容,则会过滤

答案 1 :(得分:0)

>>> from bs4 import BeautifulSoup as bs
>>> html = '<p class="c4">SOMETEXT</p><p class="c5"></p>'
>>> soup = bs(html)
>>> [tag.attrs for tag in soup.findAll('p') if tag.string]
[{'class': ['c4']}]