Python / BeautifulSoup – 如何从元素中删除所有标签?

我怎样才能从BeautifulSoup中find的元素中去掉所有的标签?

随着BeautifulStoneSoup进入bs4 ,在Python3中更加简单

 from bs4 import BeautifulSoup soup = BeautifulSoup(html) text = soup.get_text() print(text) 

为什么我没有看到有关unwrap方法的任何答案? 或者,更简单的get_text方法

http://www.crummy.com/software/BeautifulSoup/bs4/doc/#unwrap http://www.crummy.com/software/BeautifulSoup/bs4/doc/#get-text

使用get_text() ,它将文档中或标签下的所有文本作为单个Unicodestring返回。

例如,从以下文本中删除所有不同的脚本标签:

 <td><a href="http://www.irit.fr/SC">Signal et Communication</a> <br/><a href="http://www.irit.fr/IRT">Ingénierie Réseaux et Télécommunications</a> </td> 

预期的结果是:

 Signal et Communication Ingénierie Réseaux et Télécommunications 

这里是源代码:

 #!/usr/bin/env python3 from bs4 import BeautifulSoup text = ''' <td><a href="http://www.irit.fr/SC">Signal et Communication</a> <br/><a href="http://www.irit.fr/IRT">Ingénierie Réseaux et Télécommunications</a> </td> ''' soup = BeautifulSoup(text) print(soup.get_text()) 

假设您想剥离标签,但保留内容,请参阅此问题的接受答案: 使用BeautifulSoup删除标签,但保留其内容

看起来这是做的方法! 就如此容易

用这行代码将当前元素中的所有文本部分连接在一起

 ''.join(htmlelement.find(text=True)) 

您可以在bs4中使用decompose方法:

 soup = bs4.BeautifulSoup('<body><a href="http://example.com/">I linked to <i>example.com</i></a></body>') for a in soup.find('a').children: if isinstance(a,bs4.element.Tag): a.decompose() print soup Out: <html><body><a href="http://example.com/">I linked to </a></body></html>