Quizás usar cookielib.CookieJar puede ayudarlo. Por ejemplo, cuando la publicación de una página que contiene un formulario:
import urllib2
import urllib
from cookielib import CookieJar
cj = CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
# input-type values from the html form
formdata = { "username" : username, "password": password, "form-id" : "1234" }
data_encoded = urllib.urlencode(formdata)
response = opener.open("https://page.com/login.php", data_encoded)
content = response.read()
EDIT:
Después del comentario de Piotr voy a elaborar un poco. De los documentos:
La clase CookieJar almacena cookies HTTP. Extrae las cookies de las solicitudes HTTP y las devuelve en respuestas HTTP. Las instancias de CookieJar expiran automáticamente las cookies contenidas cuando es necesario. Las subclases son también son responsables de almacenar y recuperar cookies de un archivo o de la base de datos .
Por lo que cualquier solicitud que realice con su instancia CookieJar
, todas las cookies se manejarán de forma automática. Un poco como su navegador :)
Solo puedo hablar desde mi propia experiencia y mi 99% de uso de cookies es para recibir una cookie y luego enviarla con todas las solicitudes posteriores en esa sesión. El código anterior maneja solo eso, y lo hace de manera transparente.
¡Esta es la solución simple y fácil, lo suficientemente exacta para muchos usos! –
Si tiene varias cookies, debe unirlas en un único valor de encabezado, separado por un punto y coma. Por ejemplo, si tiene un diccionario de valores de cookie llamado 'cookievals', entonces use' opening.addheaders.append (('Cookie', ";" .join ('% s =% s'% (k, v) para k, v en cookievals.items()))) '. –
¿Qué pasa si están usando otros parámetros para abrir? – Andrew