2016-03-25 16 views
1

Değer içeren bir çerez oluşturan bir web sayfasına erişiyorum ve bu değeri değiştirip aynı web sitesinden başka bir sayfaya erişiyorum.Python İsteği Mevcut bir çerezin değerini değiştirmek için uygun yol nedir?

[74]: s.cookies.set('my_cookie','new_value') 
Out[74]: Cookie(version=0, name='my_cookie', value='new_value', port=None, port_specified=False, domain='/mydomain.lol', domain_specified=False, domain_initial_dot=False, path='/my_path', path_specified=True, secure=False, expires=None, discard=True, comment=None, comment_url=None, rest={'HttpOnly': None}, rfc2109=False) 

ama karşılığında ben

var: ilk ben istekleri ile birçok şeyi denedik s = requests.Session()

In [63]: s.cookies 
Out[63]: <RequestsCookieJar[Cookie(version=0, name='my_cookie', value='normal_value', port=None, port_specified=False, domain='my_domain.lol', domain_specified=False, domain_initial_dot=False, path='/my_path', path_specified=False, secure=False, expires=None, discard=True, comment=None, comment_url=None, rest={}, rfc2109=False)]> 

açılan bir oturum şöyledir: Python kullanma librequests aşağıdaki çerez var

In [75]: s.cookies 
Out[75]: <RequestsCookieJar[Cookie(version=0, name='my_cookie', value='new_value', port=None, port_specified=False, domain='/mydomain.lol', domain_specified=False, domain_initial_dot=False, path='/my_path', path_specified=True, secure=False, expires=None, discard=True, comment=None, comment_url=None, rest={'HttpOnly': None}, rfc2109=False), 
Cookie(version=0, name='my_cookie', value='new_value', port=None, port_specified=False, domain='mydomain.lol', domain_specified=False, domain_initial_dot=False, path='/my_path', path_specified=False, secure=False, expires=None, discard=True, comment=None, comment_url=None, rest={}, rfc2109=False)]> 

Gördüğünüz gibi, yeni değerin yerine eski değerin yerine yeni bir çerez oluşturuldu, aynı sonuç elde edildi. kullanarak:

s.cookies['my_cookie'] = 'new_value' 

Sonra benim çerez ayarı ne zaman kadar birçok şeyi belirterek çalıştı ve işe yaradı:

In [67]: s.cookies.set('my_cookie','new_value',domain='mydomain.lol',path='/my_path') 
Out[67]: Cookie(version=0, name='my_cookie', value='new_value', port=None, port_specified=False, domain='mydomain.lol', domain_specified=True, domain_initial_dot=False, path='/my_path', path_specified=True, secure=False, expires=None, discard=True, comment=None, comment_url=None, rest={'HttpOnly': None}, rfc2109=False) 

In [68]: s.cookies 
Out[68]: <RequestsCookieJar[Cookie(version=0, name='my_cookie', value='new_value', port=None, port_specified=False, domain='mydomain.lol', domain_specified=True, domain_initial_dot=False, path='/my_path', path_specified=True, secure=False, expires=None, discard=True, comment=None, comment_url=None, rest={'HttpOnly': None}, rfc2109=False)]> 

nedenle sorumu, çerez kaydetme daha rahat yolu yoktur çok şey belirtmeden mi? Örneğimin ilk çerezini alarak mı?

+0

kod biçimlendirme büyük görünmüyor, onu geliştirmek için bir yol var? – aze

cevap

1

Önce Yok olarak değerini ayarlayabilirsiniz:

s.cookies.set('cookie', None) 
    s.cookies.set('cookie', "new_value") 

Bir örnek:

In [5]: import requests 


In [6]: with requests.Session() as s: 
    ...:   s.get('http://httpbin.org/cookies/set?c1=foo&c2=bar') 
    ...:   r = s.get('http://httpbin.org/cookies') 
    ...:   print(r.text) 
    ...:   s.cookies.set('c1', None) 
    ...:   s.cookies.set('c1', "foobar") 
    ...:   print(s.cookies) 
    ...:   r = s.get('http://httpbin.org/cookies') 
    ...:   print(r.text) 
    ...:  
{ 
    "cookies": { 
    "c1": "foo", 
    "c2": "bar" 
    } 
} 

<<class 'requests.cookies.RequestsCookieJar'>[<Cookie c1=foobar for />, <Cookie c2=bar for httpbin.org/>]> 
{ 
    "cookies": { 
    "c1": "foobar", 
    "c2": "bar" 
    } 
} 
+0

Ancak bu, diğer değerleri, web sayfasını ziyaret ettiğimde daha önce verilmiş olana göre tutar mı? – aze

+0

@ user3714670, denedin mi? –

+0

Talihsiz bir şekilde önceki çerezleri bu yolla temizlemelisiniz. @PadraicCunningham o zamandan beri daha iyi bir yol buldunuz mu? – AlexG

İlgili konular