Können Skript-Tags und alle ihre Inhalte mit BeautifulSoup aus HTML entfernt werden, oder muss ich reguläre Ausdrücke oder etwas anderes verwenden?
90
Können Skript-Tags und alle ihre Inhalte mit BeautifulSoup aus HTML entfernt werden, oder muss ich reguläre Ausdrücke oder etwas anderes verwenden?
>>> 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 vordecompose
Ort.Anwendungsbeispiel:
Ziemlich nützlich, um Detritus wie 'script', 'img' usw. loszuwerden.
quelle
decompose
undextract
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.quelle