¿Se pueden eliminar las etiquetas de script y todo su contenido de HTML con BeautifulSoup, o tengo que usar expresiones regulares u otra cosa?
90
¿Se pueden eliminar las etiquetas de script y todo su contenido de HTML con BeautifulSoup, o tengo que usar expresiones regulares u otra cosa?
>>> 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'])]
Tenga en cuenta que para usar múltiples etiquetas, el parámetro debe ser una lista'<script class="blah">a</script>baba<script id="blahhhh">b</script>'
:? ¿Es lo mismo?<html><head></head><body><p>baba</p></body></html>
Respuesta actualizada para aquellos que puedan necesitar una referencia futura: la respuesta correcta es.
decompose()
Puede utilizar diferentes formas, perodecompose
funciona en el lugar.Uso de ejemplo:
Bastante útil para deshacerse de detritos como 'script', 'img' y así sucesivamente.
fuente
decompose
yextract
es que este último devuelve lo que se eliminó, mientras que el primero simplemente lo destruye. Así que esta es la respuesta más precisa a la pregunta, pero los otros métodos funcionan.remove
contenido. A menudo se utiliza para limpiar HTML de etiquetas y formato innecesarios.Como se indica en la ( documentación oficial ), puede usar el
extract
método para eliminar todo el subárbol que coincida con la búsqueda.fuente