江湖小白之一起學Python (六)爬蟲中session及cookie的運用

這幾天自己有個小需求,忙着寫爬取知乎的代碼,所以耽誤了下,不過也正好來講一下爬蟲中關於session及cookie的運用,因爲這個在爬取需要登錄或者cookie值的時候會用到,其實方法挺簡單的,這裏我們使用常用的http裏的cookiejar:

from http import cookiejar

之前我們都是用的requests庫來請求url地址的,那我還是以這個來講解,關於什麼是cookie,什麼是session,我就不在這裏一一說明了,有興趣的童鞋可以看下基礎,那下面就說下cookiejar的用法,我就拿最近請求知乎的代碼的片段說下:

#定義session
self.session=requests.session()
# 設置cookie信息
self.session.cookies = cookiejar.LWPCookieJar(filename='zh_cookie.txt')

上面2行是先設置好cookie信息,定義的self.session,這個是我自己定義的一個類文件裏的初始化方法裏,所以用到self,這個之前的文章有講過,cookiejar.LWPCookieJar裏面有3個參數,filename是存放cookie的文件,簡寫的話你可以去掉filename=;

通常一般的情況下接着就是加載cookie,然後判斷下cookie是否加載成功:

try:
    self.session.cookies.load(ignore_discard=True, ignore_expires=True)
except:
    print("Cookie 未能加載")

在這load方法中ignore_discard=True的意思是說即使瀏覽器失效也將它讀取出來,ignore_expires=True的意思說是即使cookie已過期我們也將它讀取出來,接着這裏就可以判斷,如果沒有出現Cookie 未能加載則說明cookies讀取成功,你可以直接通過

self.session.get(url='http://www.zhihu.com')

這裏就攜帶了讀取的cookie去請求這個地址, 當然按照上面的操作你是肯定訪問不了登陸後的頁面的,因爲你還沒有實現登錄成功後保存cookie,可以通過下面來實現:

self.session.cookies.save(ignore_discard=True, ignore_expires=True)

裏面也包含了ignore_discard,ignore_expires,反正意思就是說不管失不失效,過不過期都保存到下來,保存到哪裏呢,就是前面定義的zh_cookie.txt文件裏,

那接下來就好操作了,如果是當你從zh_cookie.txt文件讀取成功時去訪問網址,如果網址無法正常訪問,我們就在執行一遍登錄流程,反之則直接訪問成功。

就是這麼簡單,好了,經過這幾篇的例子,用python抓取網址的基本操作差不多就這樣,後面可能還會說到線程及多線程的問題,因爲信息是千千萬萬條的,我們不可能一直用for循環一個一個慢慢的等待……

我們要壓榨電腦的最大資源,縮短時間,提高效率,這樣你才能獲得最大的價值!

最後還是一句話,想要學得快,還是要自己多實際動手敲敲代碼,分析分析過程與結果,這樣你的思維在運轉的時候學東西才快,

江湖不說再見,咱們下篇見!

關注公衆號,一起來提高自己吧!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章