python-44: cookielib的使用

本篇參考自 伯樂在線 :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工具

這裏面有不少的東西咱們沒必要深究,我以爲咱們如今只要知道三件事情就能夠了網站

  1. 如何獲取 cookies
    ui

  2. 如何將 cookies 保存到文件以便之後使用url

  3. 如何從文件裏面取出cookies .net

要完成這三件事情只須要這麼模塊裏面的幾個類:CookieJar,FileCookieJar,MozillaCookieJar,LWPCookieJar

它們之間的關係是這樣的:CookieJar —-派生—->FileCookieJar —-派生—–>MozillaCookieJar和LWPCookieJar

  1.  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()
相關文章
相關標籤/搜索