有没有办法只在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)]
帮助很大!
有没有办法只在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)]
帮助很大!
认为您想要这个,因为问题已得到澄清:
[tag.attrs for tag in soup.findAll(True) if tag.string]
.findAll(True)
返回文档中的所有标签,所以.attr
即使它是空的,它们也会有一个,如果标签有.string
内容,则过滤。
>>> 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']}]