我想要一个大的HTML文档,我想删除所有标记之间的所有内部文本。我似乎发现的一切只是从HTML中提取文本。我想要的只是原始HTML标签,其属性完好无损。如何过滤掉文本呢?
答案 0 :(得分:1)
在每个文本元素上查找包含soup.find_all(text=True)
和.extract()
的所有文字,将其从文档中删除:
for textelement in soup.find_all(text=True):
textelement.extract()
演示:
>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup('''\
... <html><body><p>Hello world!<p>
... <div><ul><li>This is all
... </li><li>Set to go!</li></ul></div>
... </body></html>''')
>>> soup
<html><body><p>Hello world!</p><p>
</p><div><ul><li>This is all
</li><li>Set to go!</li></ul></div>
</body></html>
>>> for textelement in soup.find_all(text=True):
... textelement.extract()
...
u'Hello world!'
u'\n'
u'This is all\n'
u'Set to go!'
u'\n'
>>> print soup.prettify()
<html>
<body>
<p>
</p>
<p>
</p>
<div>
<ul>
<li>
</li>
<li>
</li>
</ul>
</div>
</body>
</html>