Y es mas podes usar beautifulsoup con un backend lxml para aumentar tu rendimiento sin necesidad de alterar tu codigo El 09/08/2014 23:55, "Ricardo Azpeitia Pimentel" <razpei...@gmail.com> escribió:
> 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. > > > El 9 de agosto de 2014, 14:08, Alexandro Colorado <j...@oooes.org> > escribió: > >> Hola Kiko, has podido revisarlo? >> >> On 8/6/14, Kiko <kikocorre...@gmail.com> wrote: >> > 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 <j...@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 <kikocorre...@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 <j...@oooes.org> >> >>> escribió: >> >>> >> >>>> Y en html.parser hay una opcion para seleccionar el tag a parsear? >> >>>> >> >>>> On 8/5/14, lasizoillo <lasizoi...@gmail.com> wrote: >> >>>> > El día 4 de agosto de 2014, 23:53, Miguel Beltran R. >> >>>> > <yourpa...@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 <j...@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@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@python.org >> >>>> >> https://mail.python.org/mailman/listinfo/python-es >> >>>> >> FAQ: http://python-es-faq.wikidot.com/ >> >>>> >> >> >>>> > _______________________________________________ >> >>>> > Python-es mailing list >> >>>> > Python-es@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@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@python.org >> >> https://mail.python.org/mailman/listinfo/python-es >> >> FAQ: http://python-es-faq.wikidot.com/ >> >> >> > _______________________________________________ >> > Python-es mailing list >> > Python-es@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@python.org >> https://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> > > > _______________________________________________ > Python-es mailing list > Python-es@python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > >
_______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/