2013-06-20 9 views
5

Próbuję dodać plik cookie do istniejącego cookiejar przy użyciu biblioteki python 1.2.3 wniosków. Za każdym razem, gdy dodaję nowy plik cookie, dane w słoiku są wymazywane w poszukiwaniu nowego pliku cookie. Brakujące klucze, brakujące wartości lub dopasowane do nieprawidłowych klawiszy. Nie jestem pewien, czy to błąd biblioteki Request, czy też nie wysyłam poprawnie pliku cookie. Używam następującego kodu, który powoduje, że złe ciasteczko w cookiejar. Czy poprawnie formatuję plik cookie? Jakieś pomysły?Jak dodać cookie do cookiejar w bibliotece zapytań Pythona

my_cookie = { 
      'domain':'www.mydomain.com', 
      'expires':None, 
      'name':'COOKIE_NAME', 
      'path':'/', 
      'value':'the cookie works', 
      'version':0 
} 

s = requests.Session() 
requests.utils.add_dict_to_cookiejar(s.cookies, my_cookie) 

Odpowiedz

8

Dowiedziałem się, jak to zrobić, importując CookieJar, Cookie i ciasteczka. Z pomocą @Lukasy pokazał mi lepszy sposób. Jednak na swój sposób nie mogłem określić atrybutów "port_specified", "domain_specified", "domain_initial_dot" lub "path_specified". Metoda "set" robi to automatycznie z wartościami domyślnymi. Próbuję zeskrobać witrynę, a ich pliki cookie mają różne wartości w tych atrybutach. Ponieważ jestem nowy w tym wszystkim, nie jestem pewien, czy to naprawdę ma znaczenie.

my_cookie = { 
"version":0, 
"name":'COOKIE_NAME', 
"value":'true', 
"port":None, 
# "port_specified":False, 
"domain":'www.mydomain.com', 
# "domain_specified":False, 
# "domain_initial_dot":False, 
"path":'/', 
# "path_specified":True, 
"secure":False, 
"expires":None, 
"discard":True, 
"comment":None, 
"comment_url":None, 
"rest":{}, 
"rfc2109":False 
} 

s = requests.Session() 
s.cookies.set(**my_cookie) 
0
plain_cookie = 'nopubuser_abo=1; groupenctype_abo=1' 
cj = requests.utils.cookiejar_from_dict(dict(p.split('=') for p in plain_cookie.split('; '))) 
sess = requests.Session() 
sess.cookies = cj 
+0

Powinieneś raczej podzielić na ';', następnie 'strip' spacje przed podziału na' = '. Również wyjaśnienie byłoby miłe. – wizzwizz4