2013-06-20 64 views
5

我想添加一個cookie到現有的cookiejar使用python請求1.2.3庫。每次我添加新的cookie時,jar中的數據都會被傳遞給新的cookie。鍵丟失,值丟失或與不正確的鍵匹配。我不確定它是否是Request庫錯誤,或者我沒有正確發送cookie。我正在使用下面的代碼,導致cookiejar中的cookie不正確。我是否正確地格式化cookie?有任何想法嗎?如何添加一個cookie到cookiejar在python請求庫

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) 

回答

8

我發現了一種通過導入CookieJar,Cookie和Cookie的方法。在@Lukasa的幫助下,他向我展示了一種更好的方式。但是,用他的方式,我無法指定「port_specified」,「domain_specified」,「domain_initial_dot」或「path_specified」屬性。 「set」方法使用默認值自動執行。我試圖抓取一個網站,他們的cookie在這些屬性中有不同的價值。由於我對這一切都很陌生,我不確定那真的很重要。

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

你或許應該各執';','上='分裂之前然後'strip'空白。另外,解釋會很好。 – wizzwizz4