Por favor una una librería de verdad para parsear tu HTML.
Puedes usar beautifulSoup en caso que no tengas un compilador de C, o en
caso que tengas uno lxml es una excelente opción.
Razones para usar una librería:
1. Es fácil.
2. Es rápido. Incluso mas rápido que las librerías integradas.
3. Es mas robusto. Hay un motón de escenarios donde html parser simplemente
no aguantara.
Razones para no usar una librería:
1. Estas trabajando con embebidos.
Enserio no veo ningún pretexto para no usar una librería completa.
Puedes intentar hacerlo htmlparse pero eso implicaría que tendrías que
construir tu propio arbol (DOM), satinizar tus propias cosas, (como cerrar
etiquetas, checar que encoding usa, etc, etc, ), hacer tu propio lenguaje
para hacer queries al dom (selectores vs xpath). En fin hay un montón de
casos que jamas te habías imaginado.
Es ridículamente sencillo como, parsear html con una librería:
<importar libreria>
<instanciar objeto de la libreria con html>
<hacer query con selectors o xpath>
http://www.crummy.com/software/BeautifulSoup/bs4/doc/
Buena suerte.
Post by unknownHola Kiko, has podido revisarlo?
Post by unknownestoy en el móvil y no puedo revisar lo que digo pero creo que
HTMLParser tiene métodos para saber dónde te encuentras. Puedes buscar
la posición del body y si te encuentras más allá pues te paras...
Si encuentro tiempo intento elaborar la respuesta más tarde.
Post by unknownGracias, por resolver mi duda, aunque el script no me funciono supongo
por que al tener doctypes u algo malformado. Alguna sugerencia en como
ignorar el parsing a partir de ciertas lineas como el <body>? Auqnue
no sean parte de HTML.parse.
Gracias.
Post by unknownHola.
*# Importamos librerías*
*import requests*
*from html.parser import HTMLParser*
*# Primero cojo unos datos con requests*
*# Si no tienes requests puedes usar urllib*
*data = str(requests.get("http://pybonacci.org
<http://pybonacci.org>").content)*
*# Creo una clase para el uso que le quiero dar a HTMLParser*
*class Parser(HTMLParser):*
* def handle_starttag(self, tag, attrs):*
* if tag == 'img':*
* print("Start tag:", tag)*
* for attr in attrs:*
* if attr[0] == 'src':*
* print(attr[1])*
*# Et voilá*
*parser = Parser()*
*parser.feed(data)*
Adapta la clase Parser al uso que le vayas a dar y listo. Mira los métodos
handle_data, etc, en los ejemplos en [1].
El código anterior es Python3, en Python2 deberás cambiar alguna
cosita.
Post by unknownPost by unknownPost by unknown[1] https://docs.python.org/3.4/library/html.parser.html
Post by unknownY en html.parser hay una opcion para seleccionar el tag a parsear?
Post by unknownEl día 4 de agosto de 2014, 23:53, Miguel Beltran R.
Post by unknownNo conozco html.parser pero si tu codigo HTML esta bien escribo podrias
usar
lxml y hacer una busqueda con el (cosa que no recuerdo como se
hace,
Post by unknownPost by unknownPost by unknownPost by unknownpero
Post by unknownPost by unknowncreo que si la tenía)
Coincido con la recomendación de lxml.
Puede parsear html
http://lxml.de/parsing.html#parsing-html
http://lxml.de/cssselect.html
http://lxml.de/xpathxslt.html
Aparte de eso, funciona muy bien con ficheros muy grandes
http://stackoverflow.com/questions/9856163/using-lxml-and-iterparse-to-parse-a-big-1gb-xml-file
Post by unknownPost by unknownPost by unknownPost by unknownPost by unknownUn saludo,
javi
Post by unknownPost by unknownSaludos una pregunta sencilla. Quiero seleccionar una etiqueta por su
clase dentro de un html usando html.parser de python 3.2.
El html es grande, y aunque he podido parsear cosas como starttag, y
data, ahora quiero limitar el html a unicamente las clases que
necesito. En este caso el tag es
<td class="ticket">Costo</td>
<td class="value">$ 432.23</td>
Gracias.
--
Alexandro Colorado
Apache OpenOffice Contributor
882C 4389 3C27 E8DF 41B9 5C4C 1DB7 9D1C 7F4C 2614
_______________________________________________
Python-es mailing list
Python-es en python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/
--
________________________________________
Lo bueno de vivir un dia mas
es saber que nos queda un dia menos de vida
_______________________________________________
Python-es mailing list
Python-es en python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/
_______________________________________________
Python-es mailing list
Python-es en python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/
--
Alexandro Colorado
Apache OpenOffice Contributor
882C 4389 3C27 E8DF 41B9 5C4C 1DB7 9D1C 7F4C 2614
_______________________________________________
Python-es mailing list
Python-es en python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/
--
Alexandro Colorado
Apache OpenOffice Contributor
882C 4389 3C27 E8DF 41B9 5C4C 1DB7 9D1C 7F4C 2614
_______________________________________________
Python-es mailing list
Python-es en python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/
_______________________________________________
Python-es mailing list
Python-es en python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/
--
Alexandro Colorado
Apache OpenOffice Contributor
882C 4389 3C27 E8DF 41B9 5C4C 1DB7 9D1C 7F4C 2614
_______________________________________________
Python-es mailing list
Python-es en python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20140809/04f44b6f/attachment.html>