[pyar] Hola mundo y primera consulta con lxml.

Andres Vargas - zodman zodman en gmail.com
Jue Sep 9 13:49:20 ART 2010


para este tipo de problemas usa BeautifulSoup es mas facil

2010/9/8 Matias Eduardo Bordone Carranza <mebordone en gmail.com>:
> Hola gente!! Bueno ,como es debido a ca va mi hola mundo.
> /**********************************/
> hola = 'h' + 'o' + 'l' + 'a' + ' '
> hola = hola + 'm' + 'u' + 'n' + 'd' + 'o'
> print '%s' % (hola)
> /**********************************/
>
> Estoy empezando a jugar  / aprender python y estoy empezando un
> pryectito. Asi que como buen
> newbie acepto todas las criticas que me hagan para ir mejorando.
> Necesito sacar información de una página de internet y lo primero que
> se me ocurrio fue tratarlo como xml y usar xpath.
> Para eso encontre la librería lxml y decidí usarla.
> La idea es sacar información de un articulo de un diario (en este caso
> de La Voz el interior por ejemplo) y guardar la informacion relevante
> en un xml.
> El problema que estoy teniendo ahora es que me da la sensación que
> lxml me esta rompiendo de alguna forma la codificación de caracteres.
> Aclaro que a lo mejor estoy haciendo cualquiera y no tengo idea.
>
> Código de prueba (aclaro que la elección del articulo fue totalmete
> aleatoria, jaja)
>
> # -*- coding: utf-8 -*-
> # Mision, ver por que carajo lxml me rompe la codificacion de caracteres.
> # Se supone que la voz tiene en el encabezado utf8 como codificacion
> from lxml import html, etree
> import nltk
>
> Notaxml = html.parse("http://www.lavoz.com.ar/noticias/politica/%E2%80%9Cen-el-pais-de-moyanolandia-suceden-estas-cosas%E2%80%9D")
>
> #opcion 1
> Tituloxml = Notaxml.xpath("/html/body/div[@class='layout']/div[@class='Contenido']/div[@class='Columnas
> clearfix']/*/div[@class='CD clearfix']/*/div[@class='Art']/h2")
> Titulostring = etree.tostring(Tituloxml[0], encoding='UTF-8' )
> Titulostring = nltk.clean_html(Titulostring)
> print Titulostring
>
> #ocion 2
> Titulostring = Notaxml.xpath("/html/body/div[@class='layout']/div[@class='Contenido']/div[@class='Columnas
> clearfix']/*/div[@class='CD clearfix']/*/div[@class='Art']/h2/text()")
> print Titulostring
>
> #en las dos me reta cuando quiero hacer esto.
> Articulo = etree.Element('Articulo')
> Diario = etree.SubElement(Articulo, 'Diario')
> Diario.text = 'La Voz del Interior'
> Titulo = etree.SubElement(Articulo, 'Titulo')
> Titulo.text = Titulostring
> print(etree.tostring(Articulo, pretty_print=True))
> Articuloxml = etree.ElementTree(Articulo)
> Articuloxml.write('pru.xml', pretty_print=True)
>
> Salida del código
>
> <h2>Tras el pedido de conciliación, se normalizó la situación en
> las plantas</h2>
> [u'Tras el pedido de conciliaci\xc3\xb3n, se normaliz\xc3\xb3 la
> situaci\xc3\xb3n en las plantas']
> Traceback (most recent call last):
>  File "experimento.py", line 22, in <module>
>    Titulo.text = Titulostring
>  File "lxml.etree.pyx", line 821, in lxml.etree._Element.text.__set__
> (src/lxml/lxml.etree.c:32944)
>  File "apihelpers.pxi", line 653, in lxml.etree._setNodeText
> (src/lxml/lxml.etree.c:15311)
>  File "apihelpers.pxi", line 1240, in lxml.etree._utf8
> (src/lxml/lxml.etree.c:19826)
> TypeError: Argument must be string or unicode.
>
> Me podrían tirar una mano (lo ideal para mi seria, flaco aca estas
> metiendo fruta, mete esta opcion, o lo que sea) o diganme en que me
> estoy equivocando y donde puedo leer para entender que esta pasando.
>
> Muchas gracias.
>
> Matías
> --
>     "Si tú tienes una manzana y yo tengo una manzana e intercambiamos
>     las manzanas, entonces tanto tú como yo seguiremos teniendo una
>     manzana. Pero si tú tienes una idea y yo tengo una idea e
>     intercambiamos ideas, entonces ambos tendremos dos ideas."
>     George Bernard Shaw
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>



-- 
Andres Vargas
www.zodman.com.mx



More information about the pyar mailing list