Les balises de script et tout leur contenu peuvent-ils être supprimés du HTML avec BeautifulSoup, ou dois-je utiliser des expressions régulières ou autre chose?
90
Les balises de script et tout leur contenu peuvent-ils être supprimés du HTML avec BeautifulSoup, ou dois-je utiliser des expressions régulières ou autre chose?
>>> 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'])]
Notez que pour utiliser plusieurs balises, le paramètre doit être une liste'<script class="blah">a</script>baba<script id="blahhhh">b</script>'
? Est-ce la même?<html><head></head><body><p>baba</p></body></html>
Réponse mise à jour pour ceux qui pourraient avoir besoin d'une référence future: La bonne réponse est.
decompose()
Vous pouvez utiliser différentes méthodes maisdecompose
fonctionne en place.Exemple d'utilisation:
Très utile pour se débarrasser des détritus comme «script», «img», etc.
la source
decompose
etextract
est que ce dernier renvoie la chose qui a été supprimée, tandis que le premier la détruit simplement. C'est donc la réponse la plus précise à la question, mais les autres méthodes fonctionnent.remove
contenu. Souvent utilisé pour nettoyer le HTML des balises et du formatage inutiles.Comme indiqué dans la ( documentation officielle ), vous pouvez utiliser la
extract
méthode pour supprimer tous les sous-arbres qui correspondent à la recherche.la source