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>