[Python-es] Seleccionar una etiqueta en especial con HTMLParser
Kiko
kikocorreoso en gmail.com
Mie Ago 6 18:22:01 CEST 2014
estoy 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.
El 6/8/14, Alexandro Colorado <jza en oooes.org> escribió:
> Gracias, 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.
>
> On 8/6/14, Kiko <kikocorreoso en gmail.com> wrote:
>> 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/
>>>
>>
>
>
> --
> 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/
>
Más información sobre la lista de distribución Python-es