[Python-es] pycurl y contenidos en UTF-8
Raúl Alexis Betancor Santana
rbetancor en gmail.com
Sab Ene 15 01:22:35 CET 2011
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.
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
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20110115/0a648618/attachment.html>
Más información sobre la lista de distribución Python-es