2012-01-04 17 views
6

Estoy tratando de hacer una solicitud a una fuente RSS que requiere una cookie, usando Python. Pensé que usar urllib2 y agregar el encabezado apropiado sería suficiente, pero la solicitud sigue diciendo que no está autenticado.urllib2 con cookies

Supongo que podría ser un problema en el lado de los sitios remotos, pero no estaba seguro. ¿Cómo uso urllib2 junto con las cookies? ¿hay un mejor paquete para esto (como httplib, mecanizar, rizo)

+0

Si todo lo que desea saber es cómo configurar una cookie, [esta pregunta] (http://stackoverflow.com/questions/3334809/python-urllib2-how-to-send-cookie-with-urlopen-request) proporciona el swer. –

+0

Gracias por el enlace. Lo comprobé y estoy configurando cookies de la misma manera (ligeramente diferente para cada lib) pero todavía no hay suerte – neolaser

Respuesta

5
import urllib2 
opener = urllib2.build_opener() 
opener.addheaders.append(('Cookie', 'cookiename=cookievalue')) 
f = opener.open("http://example.com/") 
13

me gustaría utilizar requests paquete, docs, que es mucho más fácil de usar que urlib2 (API cuerdo).

Si la respuesta contiene algunas cookies, puede acceder rápidamente a ellos:

url = 'http://httpbin.org/cookies/set/requests-is/awesome' 
r = requests.get(url) 
print r.cookies #{'requests-is': 'awesome'} 

Para enviar sus propias cookies en el servidor, puede utilizar el parámetro de cookies:

url = 'http://httpbin.org/cookies' 
cookies = dict(cookies_are='working') 
r = requests.get(url, cookies=cookies) 
r.content # '{"cookies": {"cookies_are": "working"}}' 

http://docs.python-requests.org/en/latest/user/quickstart/#cookies

+6

solicitudes es definitivamente mucho mejor, pero puede hacer [algo similar a su primer ejemplo con el built-up urllib2 y cookielib] (http://docs.python.org/library/cookielib.html#examples), si tiene que – dbr