Dado que el HTML fue ensamblado a partir de fuentes heterogéneas, es probable que no esté interesado en ningún script que pueda contener. Entonces tu enfoque me parece viable.
Creo que el enfoque más práctico y fácil de mantener sería hacer una lista de permitidas etiquetas y atributos HTML (es probable que no desee, más que simplemente no necesita , Código CSS, por lo que los atributos id
, style
y class
se pueden descartar por completo). Es muy probable que las etiquetas como IFRAME
y los atributos como onfocus
no se incluyan en la lista.
Una vez que tenga esto, puede ejecutar su HTML a través de un analizador que eliminará cualquier etiqueta y atributo desconocido. Si lo desea, puede hacer esto en dos etapas, un limpiador "tagsoup" (HTML Tidy o TagSoup o HTMLClean o BeautifulSoup - probaría HTML Tidy primero) y un analizador HTML completo.
De esta manera, terminarías con un código HTML bien formado y desfigurado que se puede manipular mucho mejor y con mayor seguridad.
Evitaría la coincidencia de expresiones regulares a menos que realmente no tuviera otra alternativa.