是否有办法仅在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)]
帮助很多!
答案 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']}]