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

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

 更新時間:2017年01月12日 10:18:50   投稿:lqh  
這篇文章主要介紹了Python爬蟲利用cookie實現(xiàn)模擬登陸實例詳解的相關(guān)資料,需要的朋友可以參考下

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

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

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

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

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


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

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

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

1、首先我們就來獲取一下網(wǎng)站的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來構(gòu)造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 

結(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 

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

2、將cookie保存到文件

上面我們得到了cookie,下面我們學習如何保存cookie。在這里我們使用它的子類MozillaCookieJar來實現(xiàn)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來構(gòu)造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'#設(shè)定保存的文件名 
mycookie.save(filename,ignore_discard=True, ignore_expires=True) 

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


  CookieJar是沒有保存save屬性的~

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


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

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

<pre style="background-color: rgb(255, 255, 255); font-family: 宋體; font-size: 9pt;"><pre name="code" class="python">#coding=utf-8 
import urllib2 
import cookielib 
import urllib 
 
#第一步先給出賬戶密碼網(wǎng)址準備模擬登錄 
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'# 登錄教務系統(tǒng)的URL,成績查詢網(wǎng)址 
 
# 第二步模擬登陸并保存登錄的cookie 
filename = 'cookie.txt'  #創(chuàng)建文本保存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請求訪問另一個網(wǎng)址,教務系統(tǒng)總址 
gradeUrl = 'http://ids.xidian.edu.cn/authserver/login?service'  #只要是帳號密碼一樣的網(wǎng)址就可以, 請求訪問成績查詢網(wǎng)址 
result = opener.open(gradeUrl) 
print result.read()</pre><br> 
<pre></pre> 
<pre></pre> 
<p></p> 
<pre></pre> 
<pre></pre> 
創(chuàng)建一個帶有cookie的opener,在訪問登錄的URL時,將登錄后的cookie保存下來,然后利用這個cookie來訪問其他網(wǎng)址。 
<p></p> 
<p><br> 
</p> 
<p>核心思想:創(chuàng)建opener,包含了cookie的內(nèi)容。之后在利用opener時,就會自動使用原先保存的cookie.<br> 
<br> 
</p> 
   
</pre> 

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

相關(guān)文章

  • Python寫入CSV文件的方法

    Python寫入CSV文件的方法

    這篇文章主要介紹了Python寫入CSV文件的方法,涉及Python使用csv模塊操作csv文件讀寫的相關(guān)技巧,非常簡單實用,需要的朋友可以參考下
    2015-07-07
  • 對python中Json與object轉(zhuǎn)化的方法詳解

    對python中Json與object轉(zhuǎn)化的方法詳解

    今天小編就為大家分享一篇對python中Json與object轉(zhuǎn)化的方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • 在Python中利用Into包整潔地進行數(shù)據(jù)遷移的教程

    在Python中利用Into包整潔地進行數(shù)據(jù)遷移的教程

    這篇文章主要介紹了在Python中如何利用Into包整潔地進行數(shù)據(jù)遷移,在數(shù)據(jù)格式的任意兩個格式之間高效地遷移數(shù)據(jù),需要的朋友可以參考下
    2015-03-03
  • Python三維網(wǎng)格體素化實例

    Python三維網(wǎng)格體素化實例

    這篇文章主要介紹了Python三維網(wǎng)格體素化實例,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • pyqt5與matplotlib的完美結(jié)合實例

    pyqt5與matplotlib的完美結(jié)合實例

    今天小編就為大家分享一篇pyqt5與matplotlib的完美結(jié)合實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • TensorFlow Saver:保存和讀取模型參數(shù).ckpt實例

    TensorFlow Saver:保存和讀取模型參數(shù).ckpt實例

    今天小編就為大家分享一篇TensorFlow Saver:保存和讀取模型參數(shù).ckpt實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • python星號(*)和雙星號(**)?函數(shù)動態(tài)參數(shù)匹配及解包操作方法

    python星號(*)和雙星號(**)?函數(shù)動態(tài)參數(shù)匹配及解包操作方法

    這篇文章主要介紹了python星號(*)和雙星號(**)?函數(shù)動態(tài)參數(shù)匹配及解包操作,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • Python?循環(huán)緩沖區(qū)

    Python?循環(huán)緩沖區(qū)

    Python 循環(huán)緩沖區(qū)是一種快速高效的數(shù)據(jù)存儲方式。 循環(huán)數(shù)據(jù)緩沖區(qū)是一個隊列,可以用作容納單個對象的容器,這篇文章主要介紹了Python?循環(huán)緩沖區(qū),需要的朋友可以參考下
    2023-09-09
  • python實現(xiàn)百度語音識別api

    python實現(xiàn)百度語音識別api

    這篇文章主要為大家詳細介紹了python實現(xiàn)百度語音識別api,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • PyQt5響應回車事件的方法

    PyQt5響應回車事件的方法

    今天小編就為大家分享一篇PyQt5響應回車事件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06

最新評論

中山市| 天祝| 方城县| 泸溪县| 建瓯市| 调兵山市| 辽中县| 美姑县| 金山区| 宕昌县| 忻城县| 朔州市| 屏南县| 林芝县| 灵璧县| 徐闻县| 平乡县| 霍山县| 兖州市| 都安| 射洪县| 怀仁县| 瓦房店市| 长垣县| 出国| 五大连池市| 金沙县| 岱山县| 什邡市| 吴堡县| 高淳县| 额济纳旗| 丰顺县| 伊吾县| 大丰市| 宁阳县| 金寨县| 洛宁县| 卫辉市| 颍上县| 阿拉善盟|