1

有没有办法只在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)]

帮助很大!

4

2 回答 2

3

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

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

.findAll(True)返回文档中的所有标签,所以.attr即使它是空的,它们也会有一个,如果标签有.string内容,则过滤。

于 2012-07-17T09:23:29.557 回答
1
>>> 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']}] 
于 2012-07-17T09:29:39.663 回答