亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python爬蟲(chóng)利用cookie實(shí)現(xiàn)模擬登陸實(shí)例詳解

系統(tǒng) 1597 0

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

舉個(gè)例子,某些網(wǎng)站是需要登錄后才能得到你想要的信息的,不登陸只能是游客模式,那么我們可以利用Urllib2庫(kù)保存我們以前登錄過(guò)的Cookie,之后載入cookie獲取我們想要的頁(yè)面,然后再進(jìn)行抓取。理解cookie主要是為我們快捷模擬登錄抓取目標(biāo)網(wǎng)頁(yè)做出準(zhǔn)備。

我之前的帖子中使用過(guò)urlopen()這個(gè)函數(shù)來(lái)打開(kāi)網(wǎng)頁(yè)進(jìn)行抓取,這僅僅只是一個(gè)簡(jiǎn)單的Python網(wǎng)頁(yè)打開(kāi)器,其參數(shù)也僅有urlopen(url,data,timeout),這三個(gè)參數(shù)對(duì)于我們獲取目標(biāo)網(wǎng)頁(yè)的cookie是遠(yuǎn)遠(yuǎn)不夠的。這時(shí)候我們就要利用到另外一種Opener――CookieJar。

cookielib也是Python進(jìn)行爬蟲(chóng)的一個(gè)重要模塊,他能與urllib2相互結(jié)合一起爬取想要的內(nèi)容。該模塊的CookieJar類(lèi)的對(duì)象可以捕獲cookie并在后續(xù)連接請(qǐng)求時(shí)重新發(fā)送,這樣就可以實(shí)現(xiàn)我們所需要的模擬登錄功能。

這里特別說(shuō)明一下,cookielib是在py2.7中自帶的模塊,無(wú)需重新安裝,想要查看其自帶模塊可以查看Python目錄下的Lib文件夾,里面有所有安裝的模塊。我一開(kāi)始沒(méi)想起來(lái),在pycharm中竟然沒(méi)有搜到cookielib,使用了快捷安裝也報(bào)錯(cuò):Couldn't find index page for 'Cookielib' (maybe misspelled?)

Python爬蟲(chóng)利用cookie實(shí)現(xiàn)模擬登陸實(shí)例詳解_第1張圖片

之后才想起來(lái)是不是自帶的就有,沒(méi)想到去lib文件夾一看還真有,白白浪費(fèi)半個(gè)小時(shí)各種瞎折騰~~

下面我們就來(lái)介紹一下這個(gè)模塊,該模塊主要的對(duì)象有CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar。

它們的關(guān)系:CookieJar ―-派生―->FileCookieJar ―-派生―?C>MozillaCookieJar和LWPCookieJar ? 主要用法,我們下面也會(huì)講到。urllib2.urlopen()函數(shù)不支持驗(yàn)證、cookie或者其它HTTP高級(jí)功能。要支持這些功能,必須使用build_opener()(可以用于讓python程序模擬瀏覽器進(jìn)行訪問(wèn),作用你懂得~)函數(shù)創(chuàng)建自定義Opener對(duì)象。

1、首先我們就來(lái)獲取一下網(wǎng)站的cookie

例子:

            
#coding=utf-8 
import cookielib 
import urllib2 
 
mycookie = cookielib.CookieJar() #聲明一個(gè)CookieJar的類(lèi)對(duì)象保存cookie(注意CookieJar的大小寫(xiě)問(wèn)題) 
handler = urllib2.HTTPCookieProcessor(mycookie) #利用urllib2庫(kù)中的HTTPCookieProcessor來(lái)聲明一個(gè)處理cookie的處理器 
opener = urllib2.build_opener(handler) #利用handler來(lái)構(gòu)造opener,opener的用法和urlopen()類(lèi)似 
response = opener.open("http://www.baidu.com") #opener返回的一個(gè)應(yīng)答對(duì)象response 
for item in my.cookie: 
  print"name="+item.name 
  print"value="+item.value 
          

結(jié)果:

            
name=BAIDUID 
value=73BD718962A6EA0DAD4CB9578A08FDD0:FG=1 
name=BIDUPSID 
value=73BD718962A6EA0DAD4CB9578A08FDD0 
name=H_PS_PSSID 
value=1450_19035_21122_17001_21454_21409_21394_21377_21526_21189_21398 
name=PSTM 
value=1478834132 
name=BDSVRTM 
value=0 
name=BD_HOME 
value=0 
          

這樣我們就得到了一個(gè)最簡(jiǎn)單的cookie。

2、將cookie保存到文件

上面我們得到了cookie,下面我們學(xué)習(xí)如何保存cookie。在這里我們使用它的子類(lèi)MozillaCookieJar來(lái)實(shí)現(xiàn)Cookie的保存

例子:

            
#coding=utf-8 
import cookielib 
import urllib2 
 
mycookie = cookielib.MozillaCookieJar() #聲明一個(gè)MozillaCookieJar的類(lèi)對(duì)象保存cookie(注意MozillaCookieJar的大小寫(xiě)問(wèn)題) 
handler = urllib2.HTTPCookieProcessor(mycookie) #利用urllib2庫(kù)中的HTTPCookieProcessor來(lái)聲明一個(gè)處理cookie的處理器 
opener = urllib2.build_opener(handler) #利用handler來(lái)構(gòu)造opener,opener的用法和urlopen()類(lèi)似 
response = opener.open("http://www.baidu.com") #opener返回的一個(gè)應(yīng)答對(duì)象response 
for item in mycookie: 
  print"name="+item.name 
  print"value="+item.value 
filename='mycookie.txt'#設(shè)定保存的文件名 
mycookie.save(filename,ignore_discard=True, ignore_expires=True) 
          

將上面的例子簡(jiǎn)單變形就可以得到本例,使用了CookieJar的子類(lèi)MozillaCookiJar,為什么呢?我們將MozillaCookiJar換成CookieJar試試,下面一張圖你就能明白:


? CookieJar是沒(méi)有保存save屬性的~

? save()這個(gè)方法中:ignore_discard的意思是即使cookies將被丟棄也將它保存下來(lái),ignore_expires的意思是如果在該文件中cookies已經(jīng)存在,則覆蓋原文件寫(xiě)入,在這里,我們將這兩個(gè)全部設(shè)置為T(mén)rue。運(yùn)行之后,cookies將被保存到cookie.txt文件中,我們查看一下內(nèi)容:

Python爬蟲(chóng)利用cookie實(shí)現(xiàn)模擬登陸實(shí)例詳解_第2張圖片

這樣我們就成功保存了我們想要的cookie

3、從文件中獲取cookie并訪問(wèn)

            
              
                #coding=utf-8 
import urllib2 
import cookielib 
import urllib 
 
#第一步先給出賬戶(hù)密碼網(wǎng)址準(zhǔn)備模擬登錄 
postdata = urllib.urlencode({ 
  'stuid': '1605122162', 
  'pwd': 'xxxxxxxxx'#密碼這里就不泄漏啦,嘿嘿嘿 
}) 
loginUrl = 'http://ids.xidian.edu.cn/authserver/login?service=http%3A%2F%2Fjwxt.xidian.edu.cn%2Fcaslogin.jsp'# 登錄教務(wù)系統(tǒng)的URL,成績(jī)查詢(xún)網(wǎng)址 
 
# 第二步模擬登陸并保存登錄的cookie 
filename = 'cookie.txt'  #創(chuàng)建文本保存cookie 
mycookie = cookielib.MozillaCookieJar(filename) # 聲明一個(gè)MozillaCookieJar對(duì)象實(shí)例來(lái)保存cookie,之后寫(xiě)入文件 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(mycookie)) #定義這個(gè)opener,對(duì)象是cookie 
result = opener.open(loginUrl, postdata) 
mycookie.save(ignore_discard=True, ignore_expires=True)# 保存cookie到cookie.txt中 
 
# 第三步利用cookie請(qǐng)求訪問(wèn)另一個(gè)網(wǎng)址,教務(wù)系統(tǒng)總址 
gradeUrl = 'http://ids.xidian.edu.cn/authserver/login?service'  #只要是帳號(hào)密碼一樣的網(wǎng)址就可以, 請(qǐng)求訪問(wèn)成績(jī)查詢(xún)網(wǎng)址 
result = opener.open(gradeUrl) 
print result.read()
              

              
              

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

              


核心思想:創(chuàng)建opener,包含了cookie的內(nèi)容。之后在利用opener時(shí),就會(huì)自動(dòng)使用原先保存的cookie.

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 夜夜爱夜夜爽夜夜做夜夜欢 | 国产日产久久高清欧美一区 | 日韩欧美视频在线一区二区 | 五月开心六月伊人色婷婷 | 亚洲 欧美 日韩在线综合福利 | 亚洲特级片 | 99国产成人高清在线视频 | 久久成人国产精品 | 日韩欧美天堂 | 日韩 亚洲 中文 图片 小说 | 日本成人tv | 成人精品mv视频在线观看 | 青青青视频自偷自拍视频1 青青青手机版视频在线观看 | 国产成人久久久精品毛片 | 国产黄大片在线观 | 国产一级特黄aa毛片 | 国产区久久| 欧美一级在线全免费 | 久久香蕉综合精品国产 | 99精品视频在线观看免费 | 久久国产视频一区 | 欧美国产精品一区二区免费 | 国产精品国产亚洲精品看不卡 | 国产一区二区三区久久 | 日本高清视频不卡 | 激情影院费观看 | 九九精品在线播放 | 狠狠插网站 | 欧美日本国产 | 国产精品视频久久久 | 中文字幕免费在线看线人动作大片 | 级毛片 | 女人用粗大自熨喷水在线视频 | 中国欧美一级毛片免费 | 超碰小说| 久久久久久亚洲精品不卡 | 亚洲天堂久久精品成人 | 欧洲精品视频在线观看 | 一级片在线视频 | 国产精品高清视亚洲一区二区 | 真实偷拍激情啪啪对白 |