python:cookie概念和應用
1.什麼是Cookie
cookie (儲存在使用者本地終端上的資料)。Cookie 在計算機中是個儲存在瀏覽器目錄中的文字檔案,當瀏覽器執行時,儲存在 RAM 中發揮作用 (此種 Cookies 稱作 Session Cookies),一旦使用者從該網站或伺服器退出,Cookie 可儲存在使用者本地的硬碟上 (此種 Cookies 稱作 Persistent Cookies)。通常情況下,當用戶結束瀏覽器會話時,系統將終止所有的 Cookie。當 Web 伺服器建立了Cookies 後,只要在其有效期內,當用戶訪問同一個 Web 伺服器時,瀏覽器首先要檢查本地的Cookies,並將其原樣傳送給 Web 伺服器。這種狀態資訊稱作“Persistent Client State HTTP Cookie” ,簡稱為 Cookies。
一個瀏覽器能建立的 Cookie 數量最多為 300 個,並且每個不能超過 4KB,每個 Web 站點能設定的 Cookie 總數不能超過 20 個。
2.opener和cookielib
2.1 opener
urlopen是一個特殊的opener,可以理解成opener的一個特殊例項,傳入的引數僅僅是url,data,timeout。
如果需要用到Cookie,只用這個opener是不能達到目的的,所以需要建立更一般的opener來實現對Cookie的設定。
2.2 cookielib
cookielib模組的主要作用是提供可儲存cookie的物件,以便於與urllib2模組配合使用來訪問Internet資源。Cookielib模組非常強大,可以利用本模組的CookieJar類的物件來捕獲
cookie並在後續連線請求時重新發送,比如可以實現模擬登入功能。該模組主要的物件有CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar。
它們的關係:CookieJar —-派生—->FileCookieJar —-派生—–>MozillaCookieJar和LWPCookieJar
3 Cookie應用
3.1獲取Cookie儲存到變數
import urllib2
import cookielib
#宣告一個CookieJar物件例項來儲存cookie
cookie = cookielib.CookieJar()
#利用urllib2庫的HTTPCookieProcessor物件來建立cookie處理器
handler = urllib2.HTTPCookieProcessor(cookie)
#通過handler來構建opener
opener = urllib2.build_opener(handler)
#此處的open方法同urllib2的urlopen方法,也可以傳入request
response = opener.open(‘
#urllib.request.install_opener(opener) #安裝opener作為urlopen()使用的全域性URL opener,即以後呼叫urlopen()時都會使用安裝的opener物件。