欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Python爬蟲利用cookie實現模擬登陸實例詳解

系統 1669 0

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

舉個例子,某些網站是需要登錄后才能得到你想要的信息的,不登陸只能是游客模式,那么我們可以利用Urllib2庫保存我們以前登錄過的Cookie,之后載入cookie獲取我們想要的頁面,然后再進行抓取。理解cookie主要是為我們快捷模擬登錄抓取目標網頁做出準備。

我之前的帖子中使用過urlopen()這個函數來打開網頁進行抓取,這僅僅只是一個簡單的Python網頁打開器,其參數也僅有urlopen(url,data,timeout),這三個參數對于我們獲取目標網頁的cookie是遠遠不夠的。這時候我們就要利用到另外一種Opener――CookieJar。

cookielib也是Python進行爬蟲的一個重要模塊,他能與urllib2相互結合一起爬取想要的內容。該模塊的CookieJar類的對象可以捕獲cookie并在后續連接請求時重新發送,這樣就可以實現我們所需要的模擬登錄功能。

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

Python爬蟲利用cookie實現模擬登陸實例詳解_第1張圖片

之后才想起來是不是自帶的就有,沒想到去lib文件夾一看還真有,白白浪費半個小時各種瞎折騰~~

下面我們就來介紹一下這個模塊,該模塊主要的對象有CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar。

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

1、首先我們就來獲取一下網站的cookie

例子:

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

結果:

            
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 
          

這樣我們就得到了一個最簡單的cookie。

2、將cookie保存到文件

上面我們得到了cookie,下面我們學習如何保存cookie。在這里我們使用它的子類MozillaCookieJar來實現Cookie的保存

例子:

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

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


? CookieJar是沒有保存save屬性的~

? save()這個方法中:ignore_discard的意思是即使cookies將被丟棄也將它保存下來,ignore_expires的意思是如果在該文件中cookies已經存在,則覆蓋原文件寫入,在這里,我們將這兩個全部設置為True。運行之后,cookies將被保存到cookie.txt文件中,我們查看一下內容:

Python爬蟲利用cookie實現模擬登陸實例詳解_第2張圖片

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

3、從文件中獲取cookie并訪問

            
              
                #coding=utf-8 
import urllib2 
import cookielib 
import urllib 
 
#第一步先給出賬戶密碼網址準備模擬登錄 
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'# 登錄教務系統的URL,成績查詢網址 
 
# 第二步模擬登陸并保存登錄的cookie 
filename = 'cookie.txt'  #創建文本保存cookie 
mycookie = cookielib.MozillaCookieJar(filename) # 聲明一個MozillaCookieJar對象實例來保存cookie,之后寫入文件 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(mycookie)) #定義這個opener,對象是cookie 
result = opener.open(loginUrl, postdata) 
mycookie.save(ignore_discard=True, ignore_expires=True)# 保存cookie到cookie.txt中 
 
# 第三步利用cookie請求訪問另一個網址,教務系統總址 
gradeUrl = 'http://ids.xidian.edu.cn/authserver/login?service'  #只要是帳號密碼一樣的網址就可以, 請求訪問成績查詢網址 
result = opener.open(gradeUrl) 
print result.read()
              

              
              

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

              


核心思想:創建opener,包含了cookie的內容。之后在利用opener時,就會自動使用原先保存的cookie.

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


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日韩欧美视频在线 | 久久久久无码国产精品一区 | 精品欧美一区二区精品久久久 | 91精品国产综合久久精品 | 偷拍自拍成人 | 欧美性色黄大片www 成人免费播放视频777777 | 天天影视插插 | 亚洲国产七七久久桃花 | 波多野结衣在线观看网址 | 一级毛片免费观看不卡视频 | 久久狠狠| 国产a做爰全过程片 | 香蕉视频免费网站 | 麻豆国产免费影片 | 91高清在线观看 | 亚洲 精品 综合 精品 自拍 | 欧美a在线 | 欧美黄视频 | 嫩草在线播放 | 毛片24种姿势无遮无栏 | 黄色片在线免费看 | 99re国产| 日韩综合在线 | 精品免费视频 | 亚洲欧美成人中文在线网站 | 嫩草影院地址一二三网址 | 黄色网页免费 | 色综合色狠狠天天综合色 | 一区免费看 | 国产日韩欧美视频 | 特黄特色的大片观看免费视频 | 久久国产精品免费一区二区三区 | 午夜直播在线 | 国产视频资源在线观看 | 丁香亚洲| 欧美精品一区二区三区蜜桃视频 | 蜜桃av人人夜夜澡人人爽 | 无码色情影片视频在线看免费 | 亚洲精品福利你懂 | 午夜精品电影 | 亚洲国产aⅴ成人精品无吗 最新国产网址 |