[Python-es] pycurl y contenidos en UTF-8

Luis Miguel Morillas morillas en gmail.com
Sab Ene 15 08:05:32 CET 2011


El día 15 de enero de 2011 01:22, Raúl Alexis Betancor Santana
<rbetancor en gmail.com> escribió:
> Buenas a todos.
> Gracias a los links que me posteraron como respuesta a mi consulta sobre
> documentación de pycurl ... he podido hacer lo que quería, conectarme al
> web-chat ajax del site y poder descargar los mensajes.
> Ahora se plantea un problema que me tiene hablando solo toda la tarde y al
> que no le encuentro solución.
> Cuando hago la llamada a curl para que descarge los mensajes, el site me
> devuelve un xml con los mensajes he información extra.
> import os.path
> import time
> import pycurl
> import urllib
> import StringIO
> import codecs
> [...]
> output = StringIO.StringIO()
> header = StringIO.StringIO()
> [...]
> c.setopt(pycurl.WRITEFUNCTION, output.write)
> c.setopt(pycurl.HEADERFUNCTION, header.write)
> [...]
> # llamas a la url
> c.perform()
> [...]
> xml = output.getvalue()
> Bien .. a partir de aquí empiezan los problemas ... si intento grabar el
> contenido a un fichero .xml para luego procesarlo con otra script python, lo
> hago así:
> f = open('salida.xml','wb')
> value = output.getvalue().decode('utf-8')
> if value.strip():
>         f.write(value.encode('utf-8'))
> f.close()
> ...
> El problema es que el fichero salida.xml, cuando lo voy a procesar con el
> otro script python, que usa lxml ... se queja de los caracteres
> "especiales", que está codificados en UTF-8 (o deberían) ... no son válidos.
> He probado de esta otra manera:
> f = codecs.open('salida','wb','utf-8')
> #Y por ultimo la respuesta guardada en la variable output
> value = output.getvalue()
> if value.strip():
>         f.write(value)
> f.close()
> c.close()
> Y no hay forma ... luego al intentar procesarlo con lxml se queja de errores
> relacionados con la codificación.

¿Qué error da? ¿Dónde? ¿Qué hace el script? Los objetos xml por
defecto están codificados siempre en utf-8.

-- lm

> La pregunta es como lidiar con esta situación ¿? ... como respuesta a la
> petición de pycurl, objeto un XML que está codificado en UTF-8 ..., necesito
> grabarlo correctamente para poder procesarlo luego, ¿que estoy haciendo mal?
> Saludos
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://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