スクリプトタグとそのすべてのコンテンツをBeautifulSoupを使用してHTMLから削除できますか、それとも正規表現などを使用する必要がありますか?
回答:
>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup('<script>a</script>baba<script>b</script>', 'lxml')
>>> for s in soup.select('script'):
>>> s.extract()
>>> soup
baba
[s.extract() for s in soup(['iframe', 'script'])]
複数のタグを使用するように、パラメータがリストされている必要があります
'<script class="blah">a</script>baba<script id="blahhhh">b</script>'
か?同じですか?
<html><head></head><body><p>baba</p></body></html>
将来の参照が必要になる可能性のある人のために更新された答え:正解はそうです。
decompose()
さまざまな方法を使用できますがdecompose
、インプレースで機能します。
使用例:
soup = BeautifulSoup('<p>This is a slimy text and <i> I am slimer</i></p>')
soup.i.decompose()
print str(soup)
#prints '<p>This is a slimy text and</p>'
「スクリプト」、「img」などの残骸を取り除くのに非常に便利です。
decompose
とは、extract
後者の戻り前者だけがそれを破壊するのに対し、除去されたものということです。したがって、これは質問に対するより正確な答えですが、他の方法でも機能します。
remove
コンテンツに対するOPの正解を述べました。多くの場合、不要なタグとフォーマットのHTMLのクリーニングに使用されます。
(公式ドキュメント)に記載されているように、このextract
メソッドを使用して、検索に一致するすべてのサブツリーを削除できます。
import BeautifulSoup
a = BeautifulSoup.BeautifulSoup("<html><body><script>aaa</script></body></html>")
[x.extract() for x in a.findAll('script')]