Python/BeautifulSoup - 如何从元素中删除所有标签?
答
看起来这是做的方式!就这么简单
这一行你的所有文字部分的当前元素中拼接
''.join(htmlelement.find(text=True))
答
可以在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>
答
为什么一直无人接听我见过有关unwrap
方法的任何内容?或者,更加轻松,通过get_text
方法
http://www.crummy.com/software/BeautifulSoup/bs4/doc/#unwrap http://www.crummy.com/software/BeautifulSoup/bs4/doc/#get-text
答
随着BeautifulStoneSoup
在bs4
走了,它甚至在Python3
from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
text = soup.get_text()
print(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())
这是最好使用'get_text()'而不是'getText()'。 – SparkAndShine 2015-07-20 16:21:17
这是为什么?很可能是这种情况,但理解原因会有所帮助。 – 2015-08-18 08:41:42
getText()是bs3语法,不符合pep8。它可能会被弃用。 – 2015-08-31 18:04:50