Antworten:
>>> 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'])]
Beachten Sie, dass der Parameter eine Liste sein muss, um mehrere Tags zu verwenden
'<script class="blah">a</script>baba<script id="blahhhh">b</script>'
? Ist es das Gleiche?
<html><head></head><body><p>baba</p></body></html>
Aktualisierte Antwort für diejenigen, die möglicherweise später nachschlagen müssen: Die richtige Antwort lautet.
decompose()
Sie können verschiedene Methoden verwenden, arbeiten jedoch vor decompose
Ort.
Anwendungsbeispiel:
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>'
Ziemlich nützlich, um Detritus wie 'script', 'img' usw. loszuwerden.
decompose
und extract
besteht darin, dass Letzteres das entfernte Objekt zurückgibt, während Ersteres es nur zerstört. Dies ist also die genauere Antwort auf die Frage, aber die anderen Methoden funktionieren.
remove
Inhalt gegeben. Wird häufig zum Bereinigen von HTML von nicht benötigten Tags und zum Formatieren verwendet.
Wie in der ( offiziellen Dokumentation ) angegeben, können Sie mit dieser extract
Methode alle Teilbäume entfernen, die der Suche entsprechen.
import BeautifulSoup
a = BeautifulSoup.BeautifulSoup("<html><body><script>aaa</script></body></html>")
[x.extract() for x in a.findAll('script')]