2009-04-04 47 views
27

¿Cuál es mi mejor opción para analizar HTML si no puedo usar BeautifulSoup o lxml? Tengo un código que usa SGMLlib pero es un poco de bajo nivel y ahora está en desuso.Analizando HTML en Python

Preferiría si pudiera causar un poco de HTML malformado aunque estoy bastante seguro de que la mayoría de las entradas estarán bastante limpias.

+1

Si puedo preguntar, ¿por qué no puedes usar lxml o BS? –

+1

Estaba tratando de evitar que las respuestas se desviaran por completo. Mis razones para evitar BeautifulSoup son muy discutibles, ¡pero estaba guardando eso para otro día! (Mis razones para evitar lxml son simples: una falla completa al instalarlo en Mac OSX o Linux :( –

+2

Aquí se muestra cómo instalar lxml en Linux: 'sudo apt-get install libxml2-dev libxslt-dev python2.7 -dev' ('python2.6-dev' si usa Python 2.6). Luego' sudo pip install lxml'. – Jabba

Respuesta

10

Python tiene un native HTML parser, sin embargo, el envoltorio Tidy que sugirió Nick también sería una opción sólida. Tidy es una biblioteca muy común, (escrito en C es?)

+0

¿Puede alguien decirme por favor? ¿Por qué las personas sugieren BeautifulSoup o lxml sobre el analizador HTML nativo? – Shatu

2

¿Quizás µTidylib satisfará sus necesidades?

1

http://www.xmlhack.com/read.php?item=1392 http://sourceforge.net/projects/pirxx/

http://pyxml.sourceforge.net/topics/

que no tienen mucha experiencia con Python, pero he utilizado Xerces (desde la fundación Apache) en el pasado y encontrado que es muy útil. La curva de aprendizaje tampoco está mal, aunque no provengo de una perspectiva de Python. Sugiero que lo consideres sin embargo. (Los primeros dos enlaces que he incluido discuten las interfaces de Python con Xerces y el último es el primer hit de google en "python xml").

+0

Sé que quiere un analizador de HTML, pero estos serán buenos lugares para comenzar. –

1

html5lib es buena:
http://code.google.com/p/html5lib/

Actualización: El enlace de arriba se ha roto. Un espejo de terceros de más arriba, se puede acceder desde https://github.com/html5lib/gcode-import

+0

Si bien este enlace puede responder a la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas solo de enlace pueden quedar invalidadas si la página vinculada cambia – dgw

+0

Esto no es * bastante * una respuesta de solo-enlace, @Dgw. Contiene una oración completa que menciona el nombre de la biblioteca enlazada, y en la ca de esta pregunta, el nombre de una biblioteca * es * la parte esencial de la respuesta. Cualquiera puede buscarlo en caso de que el enlace esté muerto. –

2

Puede instalar lxml y muchos otros módulos de Python fácilmente y sin problemas en el Mac (OS X) usando Pallet, que es el MacPorts official GUI

El nombre del módulo es py27-lxml. Fácil como 1,2,3.