2009-04-04 4 views
27

Qual è la soluzione migliore per analizzare il codice HTML se non riesco a utilizzare BeautifulSoup o lxml? Ho del codice che usa SGMLlib ma è un po 'di basso livello e ora è deprecato.Analisi HTML in Python

Preferirei se potesse stordire un po 'di HTML malformato anche se sono quasi certo che la maggior parte dell'input sarà abbastanza pulita.

+1

Se posso chiedere, perché non puoi usare lxml o BS? –

+1

Stavo cercando di evitare che le risposte fossero completamente sviate. Le mie ragioni per evitare BeautifulSoup sono estremamente discutibili ma lo stavo salvando per un altro giorno! (I miei motivi per evitare lxml sono semplici: un completo errore di installazione su Mac OSX o Linux :( –

+2

Ecco come installare lxml su Linux: 'sudo apt-get install libxml2-dev libxslt-dev python2.7 -dev' ('python2.6-dev' se usi Python 2.6) Poi 'sudo pip install lxml'. – Jabba

risposta

10

Python ha un native HTML parser, tuttavia il wrapper Tidy suggerito da Nick sarebbe probabilmente anche una scelta solida. Tidy è una libreria molto comune, (scritto in C è?)

+0

Qualcuno può dirmi come perché la gente suggerisce BeautifulSoup o lxml sul parser HTML nativo? – Shatu

2

Forse µTidylib soddisferà le vostre esigenze?

1

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

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

non ho molta esperienza con Python, ma ho usato Xerces (dalla fondazione Apache) in passato e trovato ad essere molto utile. Anche la curva di apprendimento non è male, anche se non provengo da una prospettiva pitone. Ti suggerisco di prenderlo in considerazione comunque. (I primi due collegamenti che ho incluso discutono le interfacce Python con Xerces e l'ultimo è il primo hit di google su "python xml").

+0

So che vuoi un parser HTML, ma questi sono dei buoni punti di partenza –

1

html5lib è buono:
http://code.google.com/p/html5lib/

Update: Il link qui sopra è rotto. Uno specchio di terze parti di cui sopra, si può accedere da https://github.com/html5lib/gcode-import

+0

Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il link per riferimento. Le risposte solo per collegamento possono diventare non valide se la pagina collegata cambia – dgw

+0

Questa non è * abbastanza * una risposta di solo collegamento, @Dgw. Contiene una frase completa che menziona il nome della libreria collegata a, e nel ca Se di questa domanda, il nome di una biblioteca * è * la parte essenziale della risposta. Chiunque può cercarlo nel caso in cui il link sia morto. –

2

È possibile installare lxml e molti altri moduli Python facilmente e senza problemi su Mac (OS X) utilizzando Pallet, che è il MacPorts official GUI

Il nome del modulo è py27-lxml. Facile come 1,2,3.