Como las expresiones regulares me asustan, estoy tratando de encontrar una manera de eliminar todas las etiquetas HTML y resolver entidades HTML de una cadena en Python.Filtrar etiquetas HTML y resolver entidades en python
Respuesta
¿Qué hay de analizar los datos HTML y extraer los datos con la ayuda del analizador?
me gustaría probar algo así como el autor describe en chapter 8.3 in the Dive Into Python book
Aunque estoy de acuerdo con Lucas que las expresiones regulares no son todo lo que da miedo, sigo pensando que hay que ir con un analizador de HTML especializada. Esto se debe a que el estándar de HTML es lo suficientemente complicado (especialmente si desea analizar arbitrariamente páginas "HTML" extraídas de Internet) que necesitaría escribir mucho código para manejar los casos de esquina. Parece que python includes one out of the box.
También debe consultar el python bindings for TidyLib que puede limpiar el código HTML roto, lo que hace que la tasa de éxito de cualquier análisis HTML sea mucho mayor.
Es posible que necesite algo más complicado que una expresión regular. páginas web a menudo tienen paréntesis angulares que no son parte de una etiqueta, así:
<div>5 < 7</div>
desprendimiento de las etiquetas con expresiones regulares devolverá la cadena "5" y tratar
< 7</div>
como una sola etiqueta y despojarlo.
Sugiero buscar un código ya escrito que lo haga por usted. Hice una búsqueda y encontré esto: http://zesty.ca/python/scrape.html También puede resolver entidades HTML.
Use BeautifulSoup! Es perfecto para esto, donde tienes un marcado entrante de dudosa virtud y necesitas obtener algo razonable de ello. Solo pase el texto original, extraiga todas las etiquetas de cadena y únase a ellas.
y el código para hacer eso sería: '' .join (BeautifulSoup (value, convertEntities = BeautifulSoup.HTML_ENTITIES) .findAll (text = True)) –
Las expresiones regulares lxml.html.clean no son de miedo, pero escribir sus propias expresiones regulares para despojar a HTML es un camino seguro a la locura (y tampoco funcionará). Siga el camino de la sabiduría y use una de las muchas buenas bibliotecas de análisis de HTML.
El ejemplo de Lucas también se rompe porque "sub" no es un método de una cadena de Python. Tendría que "importar re", luego llamar a re.sub (patrón, repl, cadena). Pero eso no es ni aquí ni allá, ya que la respuesta correcta a su pregunta no implica escribir expresiones regulares.
Al ver la cantidad de sentido que la gente está demostrando en otras respuestas aquí, diría que usar una expresión regular probablemente no sea la mejor idea para su situación. Busque algo probado y trate mi respuesta anterior como una demostración de que las expresiones regulares no necesitan ser que miedo.
si utiliza Django también se podría utilizar http://docs.djangoproject.com/en/dev/ref/templates/builtins/#striptags ;)
- 1. Convertir etiquetas en entidades html
- 2. entidades convertir HTML a Unicode y viceversa
- 3. Entidades UTF-8 y HTML
- 4. Decodificación de entidades HTML con Python
- 5. Convertir entidades XML/HTML en cadenas Unicode en Python
- 6. python [lxml] - limpieza de etiquetas html
- 7. Filtrar etiquetas de anclaje en una cadena
- 8. Linq To Entities - cómo filtrar entidades hijo
- 9. ¿Cómo convertir caracteres especiales en entidades html?
- 10. ¿Cómo puedo resolver entidades al cargar en un XDocument?
- 11. Decodificar entidades HTML en android
- 12. Conversión de entidades HTML con nombre a entidades HTML numéricas
- 13. Cómo decodificar entidades HTML numéricas en PHP
- 14. etiquetas html en las etiquetas de opción
- 15. Entidades HTML con Knockout
- 16. ¿Cómo puedo filtrar todas las etiquetas HTML, excepto una determinada lista blanca?
- 17. Java: convierta entidades html con nombre en entidades xml numeradas
- 18. [X] etiquetas personalizadas HTML: Pros y Contras
- 19. Sanitize HTML y cierre las etiquetas incompletas
- 20. jQuery HTML() y de cierre automático etiquetas
- 21. Etiquetas de escape en html
- 22. Mezcla de etiquetas JSF y HTML
- 23. Impedir que jQuery escape entidades html
- 24. Usando python para editar html, pero lxml convierte lindas entidades html en una extraña codificación
- 25. Eliminar etiquetas HTML en String
- 26. Formato condicional en etiquetas HTML
- 27. Almacenar etiquetas html en xml
- 28. Desapareciendo entidades de dingbat HTML
- 29. ¿Cómo puedo decodificar entidades HTML?
- 30. Eliminar todas las etiquetas de javascript y las etiquetas de estilo de html con python y el módulo lxml
En realidad el enlace a Inmersión en Python debe ser [esto] (http: // diveintopython.org/html_processing/index.html) –