Encontré HTMLParser para sax y xml.minidom para xml. Tengo un html bastante bien formado, así que no necesito un analizador demasiado fuerte, ¿alguna sugerencia?Python: ¿Hay un paquete integrado para analizar html en dom
Respuesta
Eche un vistazo a BeautifulSoup. Es popular y excelente para analizar HTML.
Recomendaría lxml. Me gusta BeautifulSoup, pero en general hay problemas de mantenimiento y problemas de compatibilidad con las versiones posteriores. He estado feliz usando lxml.
después: las mejores recomendaciones son utilizar lxml, html5lib o BeautifulSoup 3.0.8. BeautifulSoup 3.1.x está diseñado para Python 3.xy se sabe que tiene problemas con versiones anteriores de Python, as noted on the BeautifulSoup website.
Ian Bicking tiene un good article en el uso de lxml.
ElementTree es otra recomendación, pero nunca la he usado.
2012-01-18: alguien ha de conseguir y decidido mí y Bartosz downvote porque recomendamos los paquetes de Python que se obtienen con facilidad, pero no forma parte de la distribución de pitón. Entonces, para los altamente literarios StackOverflowers: "Puedes usar xml.dom.minidom, pero nadie recomendará esto sobre las alternativas".
por lo que vale, intenté analizar algo de HTML usando ElementTree y xml minidom, ¡y ambos se atragantaron con errores de análisis en etiquetas de script (javascript)! – Michael
Acabo de agregar una respuesta con un ejemplo de trabajo de xml.dom.minidom. En algunas situaciones, la instalación de un módulo externo es onerosa o imposible. Además, eso es lo que pidió la pregunta original. – velotron
Para manejar objetos DOM, puede usar HTMLDOM para python.
BeautifulSoup y lxml son geniales, pero las respuestas no son adecuadas aquí, ya que la pregunta es acerca de los builtins. Aquí hay un ejemplo del uso del módulo integrado minidom para analizar una cadena HTML. Probado con CPython 3.5.2:
from xml.dom.minidom import parseString
html_string = """
<!DOCTYPE html>
<html><head><title>title</title></head><body><p>test</p></body></html>
"""
# extract the text value of the document's <p> tag:
doc = parseString(html_string)
paragraph = doc.getElementsByTagName("p")[0]
content = paragraph.firstChild.data
print(content)
- 1. Cómo analizar HTML mal formado en python
- 2. ¿Biblioteca DOM preferida para analizar páginas html con node.js?
- 3. Control HTML integrado para Blackberry?
- 4. Cómo analizar HTML malformado en python, usando librerías estándar
- 5. Analizar CSS como simple DOM
- 6. ¿Hay algún evento cross-thread integrado en python?
- 7. Cómo analizar HTML desde JavaScript en Firefox?
- 8. ¿Hay un IDE para D con depurador integrado?
- 9. Analizando binarios MIPS: ¿hay una biblioteca Python para analizar datos binarios?
- 10. PHP HTML DOM analizador
- 11. Portando Python a un sistema integrado
- 12. Python IDE integrado en Visual Studio 2008?
- 13. Retardo para HTML simple Clase DOM
- 14. Necesito analizar datos xml no formados (HTML)
- 15. ¿Qué navegador integrado para el proyecto C++?
- 16. Comprueba si hay un paquete instalado
- 17. cuáles son los pasos/estrategia para analizar y mejorar el rendimiento de un sistema integrado
- 18. Ejecutando un paquete python
- 19. .NET HTML DOM Parser?
- 20. de lectura/analizar archivos Excel (XLS) con Python
- 21. Biblioteca de Python para renderizar HTML y Javascript
- 22. cómo crear XPATH para un elemento HTML DOM?
- 23. Limpiar HTML en Python
- 24. Mejor orden de atributos en HTML para consultas DOM
- 25. ¿Hay un sistema de plantillas html-only para php?
- 26. PHP analizar HTML
- 27. Método para analizar el documento HTML en Ruby?
- 28. HTML DOM ¿Transacción de dibujo en Javascript?
- 29. ¿Hay algo "como" CSS integrado en XSL-FO?
- 30. Analizando HTML en Python
no está ya incluido en si no me equivoco – Guy
No, no está incorporada. Pero puede instalarlo fácilmente usando easy_install o simplemente descargarlo desde el sitio web y ponerlo en PYTHONPATH. Whole BeautifulSoup está contenido en un solo archivo, por lo que no es una gran carga. – Bartosz
Se supone que BeautifulSoup analiza el HTML sucio no "bastante bien formado". – tbz