89

如何简单地从 BeautifulSoup 中找到的元素中删除所有标签?

4

7 回答 7

127

有了BeautifulStoneSoup进去bs4,在 Python3 中就更简单了

from bs4 import BeautifulSoup

soup = BeautifulSoup(html)
text = soup.get_text()
print(text)
于 2015-01-27T02:47:02.270 回答
17

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

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

于 2014-04-29T00:40:34.297 回答
14

使用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())
于 2015-07-20T16:37:08.803 回答
9

可以使用 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>
于 2013-10-17T22:37:41.220 回答
3

将内容简单地获取为文本而不是 html 的代码:

'html_text'参数是您将传递给此函数以获取文本的字符串

from bs4 import BeautifulSoup

soup = BeautifulSoup(html_text, 'lxml')
text = soup.get_text()
print(text)
于 2020-05-18T08:53:36.143 回答
1

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

通过这一行,您将当前元素中的所有文本部分连接在一起

''.join(htmlelement.find(text=True))
于 2013-04-25T04:46:12.747 回答
0

这是源代码:您可以获取恰好在 URL 中的文本

URL = ''
page = requests.get(URL)
soup = bs4.BeautifulSoup(page.content,'html.parser').get_text()
print(soup)
于 2020-03-10T15:08:30.560 回答