[Python-es] Documentación o ejemplos sobre pycurl

Eduard Diaz eventgrafic en gmail.com
Jue Ene 13 21:06:47 CET 2011


Hola

Suena interesante, estaría bien darle un vistazo :D

La documentación para saber como utilizarlo es a partir de la de curl y
sobretodo libcurl

http://curl.haxx.se/docs/manual.html
http://curl.haxx.se/libcurl/c/libcurl-tutorial.html

Las opciones disponibles las puedes ver en:
http://curl.haxx.se/libcurl/c/curl_easy_setopt.html
(supongo que tendrías que mirar el código de pycurl por si hay alguna no
implementada, yo no lo he mirado)

un ejemplo (con json, no xml) de como loginarte con cookies seria:

import os.path
import time
import pycurl
import urllib
import StringIO

url = 'http://localhost/login/'

cookie_file = os.path.join('tu_ruta', 'cookies.txt')

data = urllib.urlencode({
        'username': 'usuario',
        'password': 'elquesea'
        })


output = StringIO.StringIO()
header = StringIO.StringIO()

# creas el objeto
c = pycurl.Curl()

# le pones las opciones que necesites (ver el manual, sobretodo de libcurl)

c.setopt(pycurl.URL, url)
c.setopt(pycurl.VERBOSE, 1)
c.setopt(pycurl.HTTPHEADER, [
     "X-Requested-With:XMLHttpRequest",
     "Accept: aplication/json"])
c.setopt(pycurl.POSTFIELDS, data)
c.setopt(pycurl.COOKIEFILE, cookie_file)
c.setopt(pycurl.WRITEFUNCTION, output.write)
c.setopt(pycurl.HEADERFUNCTION, header.write)

# llamas a la url
c.perform()

# Compruebas cabeceras y lo que necesites
print '-'*10
print "URL ", c.getinfo(pycurl.EFFECTIVE_URL)
print "HTTP-code:", c.getinfo(c.HTTP_CODE)
print "Total-time:", c.getinfo(c.TOTAL_TIME)
print "Download speed: %.2f bytes/second" % c.getinfo(c.SPEED_DOWNLOAD)
print "Document size: %d bytes" % c.getinfo(c.SIZE_DOWNLOAD)
print "Effective URL:", c.getinfo(c.EFFECTIVE_URL)
print "Content-type:", c.getinfo(c.CONTENT_TYPE)
print "Namelookup-time:", c.getinfo(c.NAMELOOKUP_TIME)
print "Redirect-time:", c.getinfo(c.REDIRECT_TIME)
print "Redirect-count:", c.getinfo(c.REDIRECT_COUNT)
epoch = c.getinfo(c.INFO_FILETIME)
print "Filetime: %d (%s)" % (epoch, time.ctime(epoch))
print '-'*10

# Siempre va bien leer el header a pelo

print header.getvalue()

#Y por ultimo la respuesta guardada en la variable output

value = output.getvalue()
if value.strip():
    print value

c.close()

Eso es todo, aunque hay que tener en cuenta el csrftoken, https y el resto
de medidas de seguridad que tenga el webchat en cuestión

Ya nos contaras como te va!!


Un saludo

-- 
//////////////////////////////////////////////////////////////////////////
Eduard Díaz
www.scopia.es
SCOPIA VISUAL INTERFACES SYSTEMS S.L.
Barcelona
Tel. 625 055 126, 933 171 771
//////////////////////////////////////////////////////////////////////////


El 13 de enero de 2011 16:47, Raúl Alexis Betancor Santana <
rbetancor en gmail.com> escribió:

> Hola a todos,
>
> estoy intentando hacer un pequeño script-pasarela, que se conecte a un
> chat web y me pase los mensajes que allí se publican a mi servidor
> jabber.
>
> La parte jabber ya la tengo terminada, ahora me falta la parte de
> conexión al chat web.
>
> La web a la que quiero conectar usa Ajax-Chat, lo cual facilita
> bastante las cosas, puesto que una vez autenticado, solo tengo que
> consultar una URL concreta y la respuesta es siempre un xml con los
> mensajes nuevos.
>
> El problema viene en que necesito hacer un HTTPRequest tipo POST a la
> url de loging y guardar todas las cookies, para luego seguir
> reenviandolas en cada petición a la url de los mensajes.
>
> He estado mirando pycurl (con curl a pelo no consigo que me guarde las
> cookies en un fichero), pero la documentación es pésima.
>
> ¿alguien tiene algún ejemplo o sabe donde pillarlo?, buscando por
> google, he encontrado varios, en todos los casos, no consigo guardar
> las cookies que devuelve el site tras la autenticación correcta.
>
> 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/
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20110113/f61bb1d3/attachment.html>


Más información sobre la lista de distribución Python-es