[Python-es] Seleccionar una etiqueta en especial con HTMLParser

Kiko kikocorreoso en gmail.com
Mie Ago 6 08:41:51 CEST 2014


Hola.

Un ejemplo sencillo con HTMLParser:

*# 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.

[1] https://docs.python.org/3.4/library/html.parser.html



El 5 de agosto de 2014, 17:31, Alexandro Colorado <jza en oooes.org> escribió:

> Y en html.parser hay una opcion para seleccionar el tag a parsear?
>
> On 8/5/14, lasizoillo <lasizoillo en gmail.com> wrote:
> > El día 4 de agosto de 2014, 23:53, Miguel Beltran R.
> > <yourpadre en gmail.com> escribió:
> >> No 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,
> pero
> >> creo que si la tenía)
> >>
> >
> > Coincido con la recomendación de lxml.
> >
> > Puede parsear html
> > http://lxml.de/parsing.html#parsing-html
> >
> > Se pueden usar selectores css:
> > http://lxml.de/cssselect.html
> > y xpath:
> > 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
> >
> > Un saludo,
> >
> > javi
> >
> >>
> >> 2014-08-04 15:02 GMT-05:00 Alexandro Colorado <jza en oooes.org>:
> >>
> >>> Saludos 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/
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20140806/8d0a669a/attachment.html>


Más información sobre la lista de distribución Python-es