如何简单地从BeautifulSoup中找到的元素中剥离所有标签?
Answers:
凭借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(),它以单个Unicode字符串的形式返回文档中或标签下的所有文本。
例如,从以下文本中删除所有不同的脚本标签:
<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())
您可以在bs4中使用分解方法:
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>
简单地将内容获取为文本而不是html的代码:
'html_text'参数是您将在此函数中传递以获取文本的字符串
from bs4 import BeautifulSoup
soup = BeautifulSoup(html_text, 'lxml')
text = soup.get_text()
print(text)
这是源代码:您可以获得URL中确切的文本
URL = ''
page = requests.get(URL)
soup = bs4.BeautifulSoup(page.content,'html.parser').get_text()
print(soup)
get_text()
代替getText()
。