為辨認用戶身份妖混、進行session跟蹤而存儲在用戶本地終端上的數(shù)據(jù)
Cookielib
主要作用是提供可存儲cookie的對象,以便于與urllib2模塊配合使用來訪問Internet資源文留。
使用Cookielib模塊的CookieJar類的對象來捕獲cookie并在后續(xù)連接請求時重新發(fā)送,比如模擬登錄
該模塊的對象有CookieJar、FileCookieJar趟紊、MozillaCoolieJar雄家、LWPCookieJar
獲取Cookie保存到變量
用CookieJar對象實現(xiàn)獲取cookie的功能效诅,存儲到變量中
import urllib2
import cookielib
# 聲明一個CookieJar對象實例來保存cookie
cookie = cookielib.CookieJar()
# 利用urllib2庫的HTTPCookieProcessor對象來創(chuàng)建cookie處理器
handler = urllib2.HTTPCookieProcessor(cookie)
# 通過handler來構建opener
opener = urllib2.build_opener(handler)
# 此處的open方法同urllib2的urlopen方法
response = opener.open("http://www.baidu.com")
for item in cookie:
print 'Key = ' + item.name
print 'Value = ' + item.value
保存Cookie到文件
使用FileCookieJar的子類MozillaCookieJar來實現(xiàn)Cookie的保存
import cookielib
import urllib2
# 設置保存cookie的文件,同級目錄下的cookie.txt
filename = "cookie.txt"
# 聲明一個MozillaCookieJar對象實例來保存cookie趟济,之后寫入文件
cookie = cookielib.MozillaCookieJar(filename)
# 利用urllib2庫的HTTPCookieProcessor對象來創(chuàng)建cookie處理器
handler = urllib2.HTTPCookieProcessor(cookie)
# 通過handler來構建opener
opener = urllib2.build_opener(handler)
# 創(chuàng)建一個請求乱投,原理同urllib2的urlopen
response = opener.open("http://www.baidu.com")
# 保存cookie到文件
cookie.save(ignore_discard=True, ignore_expires=True)
ignore_discard:即使cookies將被丟棄也將它保存下來
ignore_expires:如果在該文件中cookies已經存在,則覆蓋原文件寫入
從文件中獲取Cookie并訪問
import cookielib
import urllib2
# 創(chuàng)建MozillaCookieJar實例對象
cookie = cookielib.MozillaCookieJar()
# 從文件中讀取cookie內容到變量
cookie.load("cookie.txt", ignore_discard = True, ignore_expires = True)
# 創(chuàng)建請求的request
request = urllib2.Request("http://www.baidu.com")
# 利用urllib的build_opener方法創(chuàng)建一個opener
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
response = opener.open(reg)
print response.read()
模擬登錄
import urllib
import urllib2
import cookielib
filename = "cookie.txt"
# 聲明一個MozillaCookieJar對象來保存cookie顷编,之后寫入文件
cookie = cookielib.mozillaCookieJar(filename)
opener = urllib2.build_opener(urlib2.HTTPCookieProcessor(cookie))
postdata = {
"account": "916859921@qq.com",
"passord": "xxxxxxx"
}
loginurl = "https://coding.net/login"
# 模擬登錄
result = opener.open(loginurl, postdata)
# 保存cookie
cookie.save(ignore_discard = True, ignore_expires = True)
# 利用cookie請求訪問另一個網址
geturl = "https://coding.net/user"
# 請求個人中心
result = opener.open(geturl)
print result.read()