Discussion:
[Python-es] Seleccionar una etiqueta en especial con HTMLParser
unknown
2014-08-04 20:02:25 UTC
Permalink
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">&#36; 432.23</td>

Gracias.
--
Alexandro Colorado
Apache OpenOffice Contributor
882C 4389 3C27 E8DF 41B9 5C4C 1DB7 9D1C 7F4C 2614
unknown
2014-08-04 21:53:30 UTC
Permalink
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)
Post by unknown
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">&#36; 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
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20140804/b8f9f860/attachment.html>
unknown
2014-08-05 13:47:58 UTC
Permalink
El día 4 de agosto de 2014, 23:53, Miguel Beltran R.
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
Post by unknown
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">&#36; 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/
unknown
2014-08-05 15:31:33 UTC
Permalink
Y en html.parser hay una opcion para seleccionar el tag a parsear?
Post by unknown
El día 4 de agosto de 2014, 23:53, Miguel Beltran R.
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
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
Un saludo,
javi
Post by unknown
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">&#36; 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
unknown
2014-08-06 06:41:51 UTC
Permalink
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
Post by unknown
Y en html.parser hay una opcion para seleccionar el tag a parsear?
Post by unknown
El día 4 de agosto de 2014, 23:53, Miguel Beltran R.
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
Post by unknown
creo 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 unknown
Un saludo,
javi
Post by unknown
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">&#36; 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>
unknown
2014-08-06 16:05:00 UTC
Permalink
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.
Post by unknown
Hola.
*# 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
Post by unknown
Y en html.parser hay una opcion para seleccionar el tag a parsear?
Post by unknown
El día 4 de agosto de 2014, 23:53, Miguel Beltran R.
Post by unknown
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
Post by unknown
Post by unknown
creo 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 unknown
Un saludo,
javi
Post by unknown
Post by unknown
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">&#36; 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
unknown
2014-08-06 16:22:01 UTC
Permalink
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.
Post by unknown
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.
Post by unknown
Hola.
*# 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
Post by unknown
Y en html.parser hay una opcion para seleccionar el tag a parsear?
Post by unknown
El día 4 de agosto de 2014, 23:53, Miguel Beltran R.
Post by unknown
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
Post by unknown
Post by unknown
creo 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 unknown
Un saludo,
javi
Post by unknown
Post by unknown
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">&#36; 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/
unknown
2014-08-09 19:08:55 UTC
Permalink
Hola Kiko, has podido revisarlo?
Post by unknown
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.
Post by unknown
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.
Post by unknown
Hola.
*# 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
Post by unknown
Y en html.parser hay una opcion para seleccionar el tag a parsear?
Post by unknown
El día 4 de agosto de 2014, 23:53, Miguel Beltran R.
Post by unknown
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
Post by unknown
Post by unknown
creo 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 unknown
Un saludo,
javi
Post by unknown
Post by unknown
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">&#36; 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
unknown
2014-08-10 02:54:51 UTC
Permalink
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 unknown
Hola Kiko, has podido revisarlo?
Post by unknown
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.
Post by unknown
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.
Post by unknown
Hola.
*# 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 unknown
Post by unknown
Post by unknown
[1] https://docs.python.org/3.4/library/html.parser.html
Post by unknown
Y en html.parser hay una opcion para seleccionar el tag a parsear?
Post by unknown
El día 4 de agosto de 2014, 23:53, Miguel Beltran R.
Post by unknown
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,
Post by unknown
Post by unknown
Post by unknown
Post by unknown
pero
Post by unknown
Post by unknown
creo 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 unknown
Post by unknown
Post by unknown
Post by unknown
Post by unknown
Un saludo,
javi
Post by unknown
Post by unknown
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">&#36; 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>
unknown
2014-08-10 04:01:39 UTC
Permalink
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" <razpeitia en gmail.com>
Post by unknown
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.
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.
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.
<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 unknown
Hola Kiko, has podido revisarlo?
Post by unknown
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.
Post by unknown
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.
Post by unknown
Hola.
*# 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 unknown
Post by unknown
Post by unknown
[1] https://docs.python.org/3.4/library/html.parser.html
Post by unknown
Y en html.parser hay una opcion para seleccionar el tag a parsear?
Post by unknown
El día 4 de agosto de 2014, 23:53, Miguel Beltran R.
Post by unknown
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,
Post by unknown
Post by unknown
Post by unknown
Post by unknown
pero
Post by unknown
Post by unknown
creo 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 unknown
Post by unknown
Post by unknown
Post by unknown
Post by unknown
Un saludo,
javi
Post by unknown
Post by unknown
Saludos una pregunta sencilla. Quiero seleccionar una etiqueta
por
Post by unknown
Post by unknown
Post by unknown
Post by unknown
Post by unknown
Post by unknown
Post by unknown
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,
Post by unknown
Post by unknown
Post by unknown
Post by unknown
Post by unknown
Post by unknown
Post by unknown
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">&#36; 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/
_______________________________________________
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/20140810/7cb4af22/attachment.html>
Loading...