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

时间:2013-04-25 04:26:49

标签: python beautifulsoup

如何从我在BeautifulSoup中找到的元素中删除所有标签?

8 个答案:

答案 0 :(得分:74)

BeautifulStoneSoup进入bs4,在Python3中更简单

from bs4 import BeautifulSoup

soup = BeautifulSoup(html)
text = soup.get_text()
print(text)

答案 1 :(得分:14)

为什么没有答案我见过提及有关unwrap方法的任何内容?或者,更简单的是get_text方法

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

答案 2 :(得分:6)

使用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())

答案 3 :(得分:5)

您可以在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>

答案 4 :(得分:2)

假设您要删除标记但保留内容,请参阅此问题的已接听答案:Remove a tag using BeautifulSoup but keep its contents

答案 5 :(得分:1)

看起来这就是要做的事!就这么简单

使用此行,您可以将当前元素中的所有文本部分连接在一起

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

答案 6 :(得分:0)

这是源代码:您可以获得网址中确切的文本

URL = ''
page = requests.get(URL)
soup = bs4.BeautifulSoup(page.content,'html.parser').get_text()
print(soup)

答案 7 :(得分:0)

仅将内容作为文本而不是html的代码:

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

from bs4 import BeautifulSoup

soup = BeautifulSoup(html_text, 'lxml')
text = soup.get_text()
print(text)