BeautifulSoupで見つけた要素からすべてのタグを単純に削除するにはどうすればよいですか?
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/#unwraphttp://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>
タグを取り除き、内容を保持したい場合、この質問に対する受け入れられた答えを参照してください: BeautifulSoupを使用してタグを削除しますが、その内容は保持します
これが方法のようです!それと同じくらい簡単
この行では、現在の要素内のすべてのテキスト部分を結合しています
''.join(htmlelement.find(text=True))