最近中文字幕2019高清,亚洲人成高清在线播放,男生淦哭男生图片动漫有字,国产亚洲精品九九久在线观看,无码av专区丝袜专区

Python爬蟲(chóng)借助cookie實(shí)現模擬登錄實(shí)例解讀

優(yōu)采云 發(fā)布時(shí)間: 2020-07-05 08:00

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

  舉個(gè)事例,某些網(wǎng)站是須要登陸后就能得到你想要的信息的,不登錄只能是旅客模式,那么我們可以借助Urllib2庫保存我們曾經(jīng)登陸過(guò)的Cookie,之后載入cookie獲取我們想要的頁(yè)面,然后再進(jìn)行抓取。理解cookie主要是為我們快捷模擬登陸抓取目標網(wǎng)頁(yè)作出打算。

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

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

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

  

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

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

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

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

  例子:

  

#coding=utf-8

import cookielib

import urllib2

mycookie = cookielib.CookieJar() #聲明一個(gè)CookieJar的類(lèi)對象保存cookie(注意CookieJar的大小寫(xiě)問(wèn)題)

handler = urllib2.HTTPCookieProcessor(mycookie) #利用urllib2庫中的HTTPCookieProcessor來(lái)聲明一個(gè)處理cookie的處理器

opener = urllib2.build_opener(handler) #利用handler來(lái)構造opener,opener的用法和urlopen()類(lèi)似

response = opener.open("http://www.baidu.com") #opener返回的一個(gè)應答對象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

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

  2、將cookie保存到文件

  上面我們得到了cookie,下面我們學(xué)習怎么保存cookie。在這里我們使用它的泛型MozillaCookieJar來(lái)實(shí)現Cookie的保存

  例子:

  

#coding=utf-8

import cookielib

import urllib2

mycookie = cookielib.MozillaCookieJar() #聲明一個(gè)MozillaCookieJar的類(lèi)對象保存cookie(注意MozillaCookieJar的大小寫(xiě)問(wèn)題)

handler = urllib2.HTTPCookieProcessor(mycookie) #利用urllib2庫中的HTTPCookieProcessor來(lái)聲明一個(gè)處理cookie的處理器

opener = urllib2.build_opener(handler) #利用handler來(lái)構造opener,opener的用法和urlopen()類(lèi)似

response = opener.open("http://www.baidu.com") #opener返回的一個(gè)應答對象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)

  將里面的事例簡(jiǎn)單變型就可以得到本例,使用了CookieJar的泛型MozillaCookiJar,為什么呢?我們將MozillaCookiJar換成CookieJar試試,下面一張圖你能夠明白:

  

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

  save()這個(gè)方式中:ignore_discard的意思是雖然cookies將被遺棄也將它保存出來(lái),ignore_expires的意思是假如在該文件中cookies早已存在,則覆蓋原文件寫(xiě)入,在這里,我們將這兩個(gè)全部設置為T(mén)rue。運行以后,cookies將被保存到cookie.txt文件中,我們查看一下內容:

  

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

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

0 個(gè)評論

要回復文章請先登錄注冊


官方客服QQ群

微信人工客服

QQ人工客服


線(xiàn)

最近中文字幕2019高清,亚洲人成高清在线播放,男生淦哭男生图片动漫有字,国产亚洲精品九九久在线观看,无码av专区丝袜专区