本篇參考自 伯樂在線 :http://python.jobbole.com/81344/
html
前面講解了怎麼使用瀏覽器的工具找到cookies,以及怎麼直接使用cookies登錄網站等等,咱們這一小節來說解一下cookies的其餘操做python
python 中對於cookies的操做使用的是cookielib 這個庫函數,或者說,模塊瀏覽器
查看這個模塊的詳細信息,仍是使用 helpcookie
import cookielib help (cookielib)
咱們能夠看到輸出以下函數
還能夠進入圖中顯示的網址查看:https://docs.python.org/2/library/cookielib.html工具
這裏面有不少的東西咱們沒必要深究,我以爲咱們如今只要知道三件事情就能夠了網站
如何獲取 cookies
ui
如何將 cookies 保存到文件以便之後使用url
如何從文件裏面取出cookies .net
要完成這三件事情只須要這麼模塊裏面的幾個類:CookieJar,FileCookieJar,MozillaCookieJar,LWPCookieJar
它們之間的關係是這樣的:CookieJar —-派生—->FileCookieJar —-派生—–>MozillaCookieJar和LWPCookieJar
CookieJar :獲取cookies並保存到變量中
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('http://www.baidu.com') for item in cookie: print 'Name = '+item.name print 'Value = '+item.value
2. 將cookies保存到文件中
FileCookieJar(filename)
建立FileCookieJar實例,檢索cookie信息並將信息存儲到文件中,filename是文件名
MozillaCookieJar(filename)
建立與Mozilla cookies.txt文件兼容的FileCookieJar實例
LWPCookieJar(filename)
建立與libwww-perl Set-Cookie3文件兼容的FileCookieJar實例
至於Mozilla和libwww是什麼,這裏給了一個連接:http://blog.csdn.net/heiyeshuwu/article/details/1691904
簡單的說就是兩種不一樣的網頁存取API
import cookielib import urllib2 #設置保存cookie的文件,同級目錄下的cookie.txt filename = 'cookie.txt' #聲明一個MozillaCookieJar對象實例來保存cookie,以後寫入文件 cookie = cookielib.MozillaCookieJar(filename) #利用urllib2庫的HTTPCookieProcessor對象來建立cookie處理器 handler = urllib2.HTTPCookieProcessor(cookie) #經過handler來構建opener opener = urllib2.build_opener(handler) #建立一個請求,原理同urllib2的urlopen response = opener.open("http://www.baidu.com") #保存cookie到文件 cookie.save(ignore_discard=True, ignore_expires=True)
關於最後save方法的兩個參數在此說明一下:
官方解釋以下:
ignore_discard: save even cookies set to be discarded. ignore_expires: save even cookies that have expiredThe file is overwritten if it already exists
因而可知,ignore_discard的意思是即便cookies將被丟棄也將它保存下來,ignore_expires的意思是若是在該文件中 cookies已經存在,則覆蓋原文件寫入,在這裏,咱們將這兩個所有設置爲True
3. 從文件中讀取cookies
import cookielib import urllib2 #建立MozillaCookieJar實例對象 cookie = cookielib.MozillaCookieJar() #從文件中讀取cookie內容到變量 cookie.load('cookie.txt', ignore_discard=True, ignore_expires=True) #建立請求的request req = urllib2.Request("http://www.baidu.com") #利用urllib2的build_opener方法建立一個opener opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie)) response = opener.open(req) print response.read()