最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解在Python程序中使用Cookie的教程

 更新時間:2015年04月30日 15:57:15   作者:崔慶才  
這篇文章主要介紹了詳解在Python程序中使用Cookie的教程,Cookie在無論哪種語言的網(wǎng)絡(luò)編程學(xué)習(xí)當(dāng)中都是重要的知識點,需要的朋友可以參考下

大家好哈,上一節(jié)我們研究了一下爬蟲的異常處理問題,那么接下來我們一起來看一下Cookie的使用。

為什么要使用Cookie呢?

Cookie,指某些網(wǎng)站為了辨別用戶身份、進(jìn)行session跟蹤而儲存在用戶本地終端上的數(shù)據(jù)(通常經(jīng)過加密)

比如說有些網(wǎng)站需要登錄后才能訪問某個頁面,在登錄之前,你想抓取某個頁面內(nèi)容是不允許的。那么我們可以利用Urllib2庫保存我們登錄的Cookie,然后再抓取其他頁面就達(dá)到目的了。

在此之前呢,我們必須先介紹一個opener的概念。
1.Opener

當(dāng)你獲取一個URL你使用一個opener(一個urllib2.OpenerDirector的實例)。在前面,我們都是使用的默認(rèn)的opener,也就是urlopen。它是一個特殊的opener,可以理解成opener的一個特殊實例,傳入的參數(shù)僅僅是url,data,timeout。

如果我們需要用到Cookie,只用這個opener是不能達(dá)到目的的,所以我們需要創(chuàng)建更一般的opener來實現(xiàn)對Cookie的設(shè)置。
2.Cookielib

cookielib模塊的主要作用是提供可存儲cookie的對象,以便于與urllib2模塊配合使用來訪問Internet資源。 Cookielib模塊非常強大,我們可以利用本模塊的CookieJar類的對象來捕獲cookie并在后續(xù)連接請求時重新發(fā)送,比如可以實現(xiàn)模擬登錄 功能。該模塊主要的對象有CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar。

它們的關(guān)系:CookieJar —-派生—->FileCookieJar —-派生—–>MozillaCookieJar和LWPCookieJar
1)獲取Cookie保存到變量

首先,我們先利用CookieJar對象實現(xiàn)獲取cookie的功能,存儲到變量中,先來感受一下
 

import urllib2
import cookielib
#聲明一個CookieJar對象實例來保存cookie
cookie = cookielib.CookieJar()
#利用urllib2庫的HTTPCookieProcessor對象來創(chuàng)建cookie處理器
handler=urllib2.HTTPCookieProcessor(cookie)
#通過handler來構(gòu)建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

我們使用以上方法將cookie保存到變量中,然后打印出了cookie中的值,運行結(jié)果如下
 

Name = BAIDUID
Value = B07B663B645729F11F659C02AAE65B4C:FG=1
Name = BAIDUPSID
Value = B07B663B645729F11F659C02AAE65B4C
Name = H_PS_PSSID
Value = 12527_11076_1438_10633
Name = BDSVRTM
Value = 0
Name = BD_HOME
Value = 0

2)保存Cookie到文件

在上面的方法中,我們將cookie保存到了cookie這個變量中,如果我們想將cookie保存到文件中該怎么做呢?這時,我們就要用到

FileCookieJar這個對象了,在這里我們使用它的子類MozillaCookieJar來實現(xiàn)Cookie的保存
 

import cookielib
import urllib2
 
#設(shè)置保存cookie的文件,同級目錄下的cookie.txt
filename = 'cookie.txt'
#聲明一個MozillaCookieJar對象實例來保存cookie,之后寫入文件
cookie = cookielib.MozillaCookieJar(filename)
#利用urllib2庫的HTTPCookieProcessor對象來創(chuàng)建cookie處理器
handler = urllib2.HTTPCookieProcessor(cookie)
#通過handler來構(gòu)建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)

關(guān)于最后save方法的兩個參數(shù)在此說明一下:

官方解釋如下:

  •     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已經(jīng)存在,則覆蓋原文件寫入,在這里,我們將這兩個全部設(shè)置為True。運行之后,cookies將被保存到cookie.txt文件中, 我們查看一下內(nèi)容,附圖如下

 3)從文件中獲取Cookie并訪問

那么我們已經(jīng)做到把Cookie保存到文件中了,如果以后想使用,可以利用下面的方法來讀取cookie并訪問網(wǎng)站,感受一下
 

import cookielib
import urllib2
 
#創(chuàng)建MozillaCookieJar實例對象
cookie = cookielib.MozillaCookieJar()
#從文件中讀取cookie內(nèi)容到變量
cookie.load('cookie.txt', ignore_discard=True, ignore_expires=True)
#創(chuàng)建請求的request
req = urllib2.Request("http://www.baidu.com")
#利用urllib2的build_opener方法創(chuàng)建一個opener
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
response = opener.open(req)
print response.read()

設(shè)想,如果我們的 cookie.txt 文件中保存的是某個人登錄百度的cookie,那么我們提取出這個cookie文件內(nèi)容,就可以用以上方法模擬這個人的賬號登錄百度。
4)利用cookie模擬網(wǎng)站登錄

下面我們以我們學(xué)校的教育系統(tǒng)為例,利用cookie實現(xiàn)模擬登錄,并將cookie信息保存到文本文件中,來感受一下cookie大法吧!

注意:密碼我改了啊,別偷偷登錄本宮的選課系統(tǒng) o(╯□╰)o
 

import urllib
import urllib2
import cookielib
 
filename = 'cookie.txt'
#聲明一個MozillaCookieJar對象實例來保存cookie,之后寫入文件
cookie = cookielib.MozillaCookieJar(filename)
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
postdata = urllib.urlencode({
      'stuid':'201200131012',
      'pwd':'23342321'
    })
#登錄教務(wù)系統(tǒng)的URL
loginUrl = 'http://jwxt.sdu.edu.cn:7890/pls/wwwbks/bks_login2.login'
#模擬登錄,并把cookie保存到變量
result = opener.open(loginUrl,postdata)
#保存cookie到cookie.txt中
cookie.save(ignore_discard=True, ignore_expires=True)
#利用cookie請求訪問另一個網(wǎng)址,此網(wǎng)址是成績查詢網(wǎng)址
gradeUrl = 'http://jwxt.sdu.edu.cn:7890/pls/wwwbks/bkscjcx.curscopre'
#請求訪問成績查詢網(wǎng)址
result = opener.open(gradeUrl)
print result.read()

以上程序的原理如下

創(chuàng)建一個帶有cookie的opener,在訪問登錄的URL時,將登錄后的cookie保存下來,然后利用這個cookie來訪問其他網(wǎng)址。

如登錄之后才能查看的成績查詢呀,本學(xué)期課表呀等等網(wǎng)址,模擬登錄就這么實現(xiàn)啦,是不是很酷炫?

相關(guān)文章

  • python日志logging模塊使用方法分析

    python日志logging模塊使用方法分析

    這篇文章主要介紹了python日志logging模塊使用方法,結(jié)合實例形式較為詳細(xì)的分析了Python日志logging模塊相關(guān)API函數(shù)與應(yīng)用技巧,需要的朋友可以參考下
    2019-05-05
  • Python?迭代器Iterator詳情

    Python?迭代器Iterator詳情

    這篇文章主要介紹了Python?迭代器Iterator詳情,迭代器可以幫助我們解決面對復(fù)雜的數(shù)據(jù)場景時,快速簡便的獲取數(shù)據(jù),下文關(guān)于其詳細(xì)介紹,需要的小伙伴可以參考一下
    2022-05-05
  • Python?調(diào)用GPT-3?API實現(xiàn)過程詳解

    Python?調(diào)用GPT-3?API實現(xiàn)過程詳解

    這篇文章主要為大家介紹了Python?調(diào)用GPT-3?API實現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Python/R語言分別實現(xiàn)斐波那契數(shù)列的示例詳解

    Python/R語言分別實現(xiàn)斐波那契數(shù)列的示例詳解

    這篇文章將通過兩個小問題:年齡計算、斐波那契數(shù)列,帶領(lǐng)大家深入淺出的理解兩種語言的基本語法,并用以實際場景,需要的可以參考一下
    2022-03-03
  • Python 實現(xiàn)LeNet網(wǎng)絡(luò)模型的訓(xùn)練及預(yù)測

    Python 實現(xiàn)LeNet網(wǎng)絡(luò)模型的訓(xùn)練及預(yù)測

    本文將為大家詳細(xì)講解如何使用CIFR10數(shù)據(jù)集訓(xùn)練模型以及用訓(xùn)練好的模型做預(yù)測。代碼具有一定價值,感興趣的小伙伴可以學(xué)習(xí)一下
    2021-11-11
  • 利用Python代碼實現(xiàn)模擬動態(tài)指針時鐘

    利用Python代碼實現(xiàn)模擬動態(tài)指針時鐘

    這篇文章主要為大家詳細(xì)介紹了如何利用python和C++代碼實現(xiàn)模擬動態(tài)指針時鐘,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2023-04-04
  • 詳解如何使用Python編寫vim插件

    詳解如何使用Python編寫vim插件

    本篇文章主要介紹了詳解如何使用Python編寫vim插件,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • python的faker庫用法

    python的faker庫用法

    今天小編就為大家分享一篇python的faker庫用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python中的hashlib模塊解析

    Python中的hashlib模塊解析

    這篇文章主要介紹了Python中的hashlib模塊解析,hashlib是一個提供字符加密功能的模塊,包含MD5和SHA的加密算法,具體支持md5,sha1, sha224, sha256, sha384, sha512等算法, 該模塊在用戶登錄認(rèn)證方面應(yīng)用廣泛,對文本加密也很常見,需要的朋友可以參考下
    2023-09-09
  • 利用pandas如何實現(xiàn)類似sql中的left join操作

    利用pandas如何實現(xiàn)類似sql中的left join操作

    這篇文章主要介紹了利用pandas如何實現(xiàn)類似sql中的left join操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06

最新評論

崇仁县| 郑州市| 双城市| 乌兰浩特市| 正安县| 东乌珠穆沁旗| 宁夏| 沾化县| 维西| 漠河县| 剑阁县| 西藏| 银川市| 南投县| 司法| 额济纳旗| 嘉善县| 安庆市| 琼海市| 五莲县| 东辽县| 逊克县| 清水河县| 故城县| 香河县| 韩城市| 泽库县| 江北区| 肥西县| 天气| 奉节县| 砀山县| 仁怀市| 淳安县| 阿巴嘎旗| 宜州市| 微博| 衡东县| 奇台县| 柘荣县| 洱源县|