Re: [Python-es] parsear HTML
Tienes un módulo con Python llamado así, HTMLParser. A mí personalmente no me gusta demasiado, y no mantiene el árbol como debería... pero para lo que quieres puede valerte. Hay un módulo que me encanta (no está en Core) llamado lxml que también soporta HTML. Te recomiendo echarle un ojo ;-) Un cordial saludo: -- Nekmo. Sitio web: http://nekmo.com Dirección de contacto: conta...@nekmo.com XMPP/Jabber: conta...@nekmo.com Identi.ca: http://identi.ca/nekmo Diaspora: Nekmo El día 2 de marzo de 2011 15:23, (P@vel) escribió: > Como puedo de un archivo html cojer todas las etiquetas que tengan > un que se llame cuentos infantiles por ejemplo, y guardar el valor > que tenga los demas de ese , es decir cojer los valores de todas > las columnas de esa fila, por ejemplo: cenicienta, 25.00 > > > Cuentos Infantiles > Cenicienta > 25.00 > > > ___ > Python-es mailing list > Python-es@python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] parsear HTML
El día 2 de marzo de 2011 15:23, (P@vel) escribió: > Como puedo de un archivo html cojer todas las etiquetas que tengan > un que se llame cuentos infantiles por ejemplo, y guardar el valor > que tenga los demas de ese , es decir cojer los valores de todas > las columnas de esa fila, por ejemplo: cenicienta, 25.00 > > > Cuentos Infantiles > Cenicienta > 25.00 > > Yo lo hago así usando una expresión xpath con amara: from amara.bindery import html doc = html.parse(url_de_la_web) cuentos = doc.xml_select(u'//tr[td="Cuentos Infantiles"]') # nodos html for cuento in cuentos: cuento.xml_encode() # sólo contenido for cuento in cuentos: for datos in cuento.xml_children: print datos, Si quieres probar amara sin instalar, he creado un amaraPortable para windows: https://bitbucket.org/lmorillas/amaraportable/downloads/AmaraPortable.exe Saludos, -- luismiguel > ___ > Python-es mailing list > Python-es@python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] parsear HTML
Yo con lxml suelo usar una funcionalidad que me permite filtrar usando CSS, lo cual me es una pasada :D Además tienes lxml tanto en Python3 como en 2.x Un cordial saludo: -- Nekmo. Sitio web: http://nekmo.com Dirección de contacto: conta...@nekmo.com XMPP/Jabber: conta...@nekmo.com Identi.ca: http://identi.ca/nekmo Diaspora: Nekmo 2011/3/2 Luis Miguel Morillas : > El día 2 de marzo de 2011 15:23, (P@vel) escribió: >> Como puedo de un archivo html cojer todas las etiquetas que tengan >> un que se llame cuentos infantiles por ejemplo, y guardar el valor >> que tenga los demas de ese , es decir cojer los valores de todas >> las columnas de esa fila, por ejemplo: cenicienta, 25.00 >> >> >> Cuentos Infantiles >> Cenicienta >> 25.00 >> >> > > Yo lo hago así usando una expresión xpath con amara: > > from amara.bindery import html > > doc = html.parse(url_de_la_web) > cuentos = doc.xml_select(u'//tr[td="Cuentos Infantiles"]') > > # nodos html > for cuento in cuentos: > cuento.xml_encode() > > # sólo contenido > for cuento in cuentos: > for datos in cuento.xml_children: > print datos, > > > Si quieres probar amara sin instalar, he creado un amaraPortable para > windows: > https://bitbucket.org/lmorillas/amaraportable/downloads/AmaraPortable.exe > > > Saludos, > > -- luismiguel > >> ___ >> Python-es mailing list >> Python-es@python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> > ___ > Python-es mailing list > Python-es@python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] parsear HTML
Yo si es que solo necesitas eso usaría expresiones regulares, van y bien y no dependes de módulos externos ahora si se trata de usar un módulo tiraría de [1] y también he leído muy bien de lxml [1] http://www.crummy.com/software/BeautifulSoup/ 2011/3/2 Nekmo : > Yo con lxml suelo usar una funcionalidad que me permite filtrar usando > CSS, lo cual me es una pasada :D Además tienes lxml tanto en Python3 > como en 2.x > > Un cordial saludo: > -- Nekmo. > > Sitio web: http://nekmo.com > Dirección de contacto: conta...@nekmo.com > XMPP/Jabber: conta...@nekmo.com > Identi.ca: http://identi.ca/nekmo > Diaspora: Nekmo > > > > 2011/3/2 Luis Miguel Morillas : >> El día 2 de marzo de 2011 15:23, (P@vel) escribió: >>> Como puedo de un archivo html cojer todas las etiquetas que tengan >>> un que se llame cuentos infantiles por ejemplo, y guardar el valor >>> que tenga los demas de ese , es decir cojer los valores de todas >>> las columnas de esa fila, por ejemplo: cenicienta, 25.00 >>> >>> >>> Cuentos Infantiles >>> Cenicienta >>> 25.00 >>> >>> >> >> Yo lo hago así usando una expresión xpath con amara: >> >> from amara.bindery import html >> >> doc = html.parse(url_de_la_web) >> cuentos = doc.xml_select(u'//tr[td="Cuentos Infantiles"]') >> >> # nodos html >> for cuento in cuentos: >> cuento.xml_encode() >> >> # sólo contenido >> for cuento in cuentos: >> for datos in cuento.xml_children: >> print datos, >> >> >> Si quieres probar amara sin instalar, he creado un amaraPortable para >> windows: >> https://bitbucket.org/lmorillas/amaraportable/downloads/AmaraPortable.exe >> >> >> Saludos, >> >> -- luismiguel >> >>> ___ >>> Python-es mailing list >>> Python-es@python.org >>> http://mail.python.org/mailman/listinfo/python-es >>> FAQ: http://python-es-faq.wikidot.com/ >>> >>> >> ___ >> Python-es mailing list >> Python-es@python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> > ___ > Python-es mailing list > Python-es@python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > -- lopz es libre, usa --> GNU/linux gentoo +--[RSA 2048]--+ | ..o.o=+ | | o =o*.+ | | . . *oO . | | .EBoo | | o.S | +--[lopz.org]--+ ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] parsear HTML
Hola *, yo tomaria la sugerencia de usar BeautifulSoup es bastante simple : Estoy paritieno del hecho de que ese codigo html es igual en todos los tr es decir se mentienen los 3 td. Seria algo como : from BeautifulSoup import BeautifulSoup page = """ Cuentos Infantiles Cenicienta 25.00 """ soup = BeautifulSoup(page) precio = str(soup.findAll("td")[2].text) # debido a que te interesa el 25.00 Quiza eso te sirva :D On Wed, Mar 2, 2011 at 18:23, lopz wrote: > Yo si es que solo necesitas eso usaría expresiones regulares, van y > bien y no dependes de módulos externos > ahora si se trata de usar un módulo tiraría de [1] y también he leído > muy bien de lxml > > [1] http://www.crummy.com/software/BeautifulSoup/ > > 2011/3/2 Nekmo : > > Yo con lxml suelo usar una funcionalidad que me permite filtrar usando > > CSS, lo cual me es una pasada :D Además tienes lxml tanto en Python3 > > como en 2.x > > > > Un cordial saludo: > > -- Nekmo. > > > > Sitio web: http://nekmo.com > > Dirección de contacto: conta...@nekmo.com > > XMPP/Jabber: conta...@nekmo.com > > Identi.ca: http://identi.ca/nekmo > > Diaspora: Nekmo > > > > > > > > 2011/3/2 Luis Miguel Morillas : > >> El día 2 de marzo de 2011 15:23, (P@vel) escribió: > >>> Como puedo de un archivo html cojer todas las etiquetas que > tengan > >>> un que se llame cuentos infantiles por ejemplo, y guardar el > valor > >>> que tenga los demas de ese , es decir cojer los valores de > todas > >>> las columnas de esa fila, por ejemplo: cenicienta, 25.00 > >>> > >>> > >>> Cuentos Infantiles > >>> Cenicienta > >>> 25.00 > >>> > >>> > >> > >> Yo lo hago así usando una expresión xpath con amara: > >> > >> from amara.bindery import html > >> > >> doc = html.parse(url_de_la_web) > >> cuentos = doc.xml_select(u'//tr[td="Cuentos Infantiles"]') > >> > >> # nodos html > >> for cuento in cuentos: > >>cuento.xml_encode() > >> > >> # sólo contenido > >> for cuento in cuentos: > >>for datos in cuento.xml_children: > >>print datos, > >> > >> > >> Si quieres probar amara sin instalar, he creado un amaraPortable para > >> windows: > https://bitbucket.org/lmorillas/amaraportable/downloads/AmaraPortable.exe > >> > >> > >> Saludos, > >> > >> -- luismiguel > >> > >>> ___ > >>> Python-es mailing list > >>> Python-es@python.org > >>> http://mail.python.org/mailman/listinfo/python-es > >>> FAQ: http://python-es-faq.wikidot.com/ > >>> > >>> > >> ___ > >> Python-es mailing list > >> Python-es@python.org > >> http://mail.python.org/mailman/listinfo/python-es > >> FAQ: http://python-es-faq.wikidot.com/ > >> > > ___ > > Python-es mailing list > > Python-es@python.org > > http://mail.python.org/mailman/listinfo/python-es > > FAQ: http://python-es-faq.wikidot.com/ > > > > > > -- > lopz es libre, usa --> GNU/linux gentoo > > +--[RSA 2048]--+ > | ..o.o=+ | > | o =o*.+ | > | . . *oO . | > | .EBoo | > | o.S | > +--[lopz.org]--+ > ___ > Python-es mailing list > Python-es@python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] parsear HTML
Con lxml es muchisimo mas simple que con BeautifulSoup, sobretodo si sabes css. Un saludo. Andrei. El día 5 de marzo de 2011 18:51, Francisco Rivas escribió: > Hola *, > yo tomaria la sugerencia de usar BeautifulSoup es bastante simple : > Estoy paritieno del hecho de que ese codigo html es igual en todos los tr es > decir se mentienen los 3 td. > Seria algo como : > from BeautifulSoup import BeautifulSoup > page = """ > Cuentos Infantiles > Cenicienta > 25.00 > """ > soup = BeautifulSoup(page) > precio = str(soup.findAll("td")[2].text) # debido a que te interesa el > 25.00 > Quiza eso te sirva :D > > On Wed, Mar 2, 2011 at 18:23, lopz wrote: >> >> Yo si es que solo necesitas eso usaría expresiones regulares, van y >> bien y no dependes de módulos externos >> ahora si se trata de usar un módulo tiraría de [1] y también he leído >> muy bien de lxml >> >> [1] http://www.crummy.com/software/BeautifulSoup/ >> >> 2011/3/2 Nekmo : >> > Yo con lxml suelo usar una funcionalidad que me permite filtrar usando >> > CSS, lo cual me es una pasada :D Además tienes lxml tanto en Python3 >> > como en 2.x >> > >> > Un cordial saludo: >> > -- Nekmo. >> > >> > Sitio web: http://nekmo.com >> > Dirección de contacto: conta...@nekmo.com >> > XMPP/Jabber: conta...@nekmo.com >> > Identi.ca: http://identi.ca/nekmo >> > Diaspora: Nekmo >> > >> > >> > >> > 2011/3/2 Luis Miguel Morillas : >> >> El día 2 de marzo de 2011 15:23, (P@vel) escribió: >> >>> Como puedo de un archivo html cojer todas las etiquetas que >> >>> tengan >> >>> un que se llame cuentos infantiles por ejemplo, y guardar el >> >>> valor >> >>> que tenga los demas de ese , es decir cojer los valores de >> >>> todas >> >>> las columnas de esa fila, por ejemplo: cenicienta, 25.00 >> >>> >> >>> >> >>> Cuentos Infantiles >> >>> Cenicienta >> >>> 25.00 >> >>> >> >>> >> >> >> >> Yo lo hago así usando una expresión xpath con amara: >> >> >> >> from amara.bindery import html >> >> >> >> doc = html.parse(url_de_la_web) >> >> cuentos = doc.xml_select(u'//tr[td="Cuentos Infantiles"]') >> >> >> >> # nodos html >> >> for cuento in cuentos: >> >> cuento.xml_encode() >> >> >> >> # sólo contenido >> >> for cuento in cuentos: >> >> for datos in cuento.xml_children: >> >> print datos, >> >> >> >> >> >> Si quieres probar amara sin instalar, he creado un amaraPortable para >> >> windows: >> >> https://bitbucket.org/lmorillas/amaraportable/downloads/AmaraPortable.exe >> >> >> >> >> >> Saludos, >> >> >> >> -- luismiguel >> >> >> >>> ___ >> >>> Python-es mailing list >> >>> Python-es@python.org >> >>> http://mail.python.org/mailman/listinfo/python-es >> >>> FAQ: http://python-es-faq.wikidot.com/ >> >>> >> >>> >> >> ___ >> >> Python-es mailing list >> >> Python-es@python.org >> >> http://mail.python.org/mailman/listinfo/python-es >> >> FAQ: http://python-es-faq.wikidot.com/ >> >> >> > ___ >> > Python-es mailing list >> > Python-es@python.org >> > http://mail.python.org/mailman/listinfo/python-es >> > FAQ: http://python-es-faq.wikidot.com/ >> > >> >> >> >> -- >> lopz es libre, usa --> GNU/linux gentoo >> >> +--[RSA 2048]--+ >> | ..o.o=+ | >> | o =o*.+ | >> | . . *oO . | >> | .EBoo | >> | o.S | >> +--[lopz.org]--+ >> ___ >> Python-es mailing list >> Python-es@python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ > > > ___ > Python-es mailing list > Python-es@python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- http://twitter.com/andsux http://www.niwi.be http://www.freebsd.org/ http://www.postgresql.org/ http://www.python.org/ http://www.djangoproject.com/ "Linux is for people who hate Windows, BSD is for people who love UNIX" "Social Engineer -> Because there is no patch for human stupidity" ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/