2011-04-09 17 views

cevap

25

Sen cookielib module kullanmalıdır urllib ile.

Çerezler istekler arasında saklanır ve bunları diskte yükleyebilir/kaydedebilirsiniz. İşte bir örnek: NID ve PREF değerleri istekleri arasında aynıdır

import cookielib 
import urllib2 

cookies = cookielib.LWPCookieJar() 
handlers = [ 
    urllib2.HTTPHandler(), 
    urllib2.HTTPSHandler(), 
    urllib2.HTTPCookieProcessor(cookies) 
    ] 
opener = urllib2.build_opener(*handlers) 

def fetch(uri): 
    req = urllib2.Request(uri) 
    return opener.open(req) 

def dump(): 
    for cookie in cookies: 
     print cookie.name, cookie.value 

uri = 'http://www.google.com/' 
res = fetch(uri) 
dump() 

res = fetch(uri) 
dump() 

# save cookies to disk. you can load them with cookies.load() as well. 
cookies.save('mycookies.txt') 

Bildirim söyledi. HTTPCookieProcessor'u ihmal ederseniz, bunlar farklı olurdu (urllib2, 2. istekte Cookie başlığı göndermez).

+2

build_opener() sizin için HTTPHandler'ı ekleyecektir. Python yüklemesinin SSL desteği varsa, HTTPSHandler'ı da ekler. https://docs.python.org/2/library/urllib2.html#urllib2.build_opener –

11

Görünüş:

alınırken kurabiye için (Python 3.1 ile, Python 2'de yerine urllib2.urlopen kullanın): basitçe bir Cookie başlığı gönderir,

>>> import urllib.request 
>>> d = urllib.request.urlopen("http://www.google.co.uk") 
>>> d.getheader('Set-Cookie') 
'PREF=ID=a45c444aa509cd98:FF=0:TM=14.....' 

Ve göndermek için istek. Bunun gibi:

r=urllib.request.Request("http://www.example.com/",headers={'Cookie':"session_id=1231245546"}) 
urllib.request.urlopen(r) 

Düzenleme:

"http.cookie" (Python 2 için "Çerez") sizin için daha iyi çalışabilir:

http://docs.python.org/library/cookie.html

+0

isteği gönderirken "isteği ile Set-Cookie başlığı gönderir" .Can sen Shaw bana biraz örnek??? – Damodaran

+1

Damodaran, düzenlenmiş cevabı :) – utdemir

+0

Python 2 hakkında emin değilim, ama 3 d '' satırını d.info() ['Set-Cookie'] 'olarak kısaltabilirsiniz. – freshtop

3

Sen Python 2,7

url="http://google.com" 
request = urllib2.Request(url) 
sock=urllib2.urlopen(request) 
cookies=sock.info()['Set-Cookie'] 
content=sock.read() 
sock.close() 
print (cookies, content) 

kullanabilecekleri ve ben noktayı almıyorum geri

def sendResponse(cookies): 
import urllib 
request = urllib2.Request("http://google.com") 
request.add_header("Cookie", cookies) 
request.add_data(urllib.urlencode([('arg1','val1'),('arg1','val1')])) 
opener=urllib2 
opener=urllib2.build_opener(urllib2.HTTPHandler(debuglevel=1)) 
sock=opener.open(request) 
content=sock.read() 
sock.close() 
print len(content) 
İlgili konular