Dopo una chiamata, come r = requests.get()
, r.cookies
restituirà un RequestsCookieJar
cui potete accedere direttamente pickle
, cioè
import pickle
def save_cookies(requests_cookiejar, filename):
with open(filename, 'wb') as f:
pickle.dump(requests_cookiejar, f)
def load_cookies(filename):
with open(filename, 'rb') as f:
return pickle.load(f)
#save cookies
r = requests.get(url)
save_cookies(r.cookies, filename)
#load cookies and do a request
requests.get(url, cookies=load_cookies(filename))
Se si desidera salva i tuoi cookie in formato leggibile dall'uomo, devi fare del lavoro per estrarre lo RequestsCookieJar
in un LWPCookieJar
.
import cookielib
def save_cookies_lwp(cookiejar, filename):
lwp_cookiejar = cookielib.LWPCookieJar()
for c in cookiejar:
args = dict(vars(c).items())
args['rest'] = args['_rest']
del args['_rest']
c = cookielib.Cookie(**args)
lwp_cookiejar.set_cookie(c)
lwp_cookiejar.save(filename, ignore_discard=True)
def load_cookies_from_lwp(filename):
lwp_cookiejar = cookielib.LWPCookieJar()
lwp_cookiejar.load(filename, ignore_discard=True)
return lwp_cookiejar
#save human-readable
r = requests.get(url)
save_cookies_lwp(r.cookies, filename)
#you can pass a LWPCookieJar directly to requests
requests.get(url, cookies=load_cookies_from_lwp(filename))
Sembra che ci sia nessun argomento 'cookies' parola chiave nella sua ultima versione di richieste. Invece, si crea semplicemente un oggetto di sessione e si imposta la proprietà 'cookies' su un oggetto' cookiejar'. – kavinyao
@kavinyao Ne sei sicuro? È ancora nella documentazione (http://docs.python-requests.org/en/latest/api/#requests.Session.cookies). – madjar
'Session' ha ancora una proprietà' cookie', ma il metodo '__init__' [non accetta argomenti parola chiave] (https://github.com/kennethreitz/requests/blob/master/requests/sessions.py#L205). – kavinyao