Python爬蟲教程-12-爬蟲使用cookie爬取登入後的頁面(人人網)(上)

肖朋偉發表於2018-09-06

Python爬蟲教程-12-爬蟲使用cookie(上)

  • 爬蟲關於cookie和session,由於http協議無記憶性,比如說登入淘寶網站的瀏覽記錄,下次開啟是不能直接記憶下來的,後來就有了cookie和session機制

Python爬蟲爬取登入後的頁面

所以怎樣讓爬蟲使用驗證使用者身份資訊的cookie呢,換句話說,怎樣在使用爬蟲的時候爬取已經登入的頁面呢,這就是本篇的重點

cookie和session介紹

  • cookie是發給使用者的(即http瀏覽器)的一段資訊
  • session是儲存在伺服器上的對應的另一半資訊,用來記錄記錄使用者資訊
  • cookie和session區別和聯絡:
    • 1.存放位置不同:cookie儲存在本地,session儲存在伺服器
    • 2.cookie不安全
    • 為什麼不安全,因為cookie是儲存在本地的,也就是說使用者可以就本地找到後進行修改
    • 所以一般用來存放使用者身份資訊,常用來識別使用者身份,比如使用者名稱+登入密碼(站點也就不怕被修改了)
    • 當我們關閉瀏覽器後,再次開啟一些網站,不用再次登入,也正是因為使用了儲存在本地瀏覽器的cookie
    • 3.session會儲存在伺服器上有過期時間,cookie也有
    • 4.單個cookie儲存資料不超過4k,部分瀏覽器會限制一個站點最多儲存20個
    • 5.session儲存在伺服器
    • 一般情況下,session是放在記憶體中或者資料庫中

使用cookie登入的網站

例如人人網:

第一步:Chrome開啟登入

這裡寫圖片描述

第二步:拷貝Chrome登入後的地址,使用火狐瀏覽器開啟

這裡寫圖片描述
這可以看到報錯302
原因就是火狐瀏覽器的cookie和Chrome儲存的cookie不一樣,站點判斷使用者身份改變,所以不允許登入,另一方面,也就說明我們使用 cookie 驗證身份是成功的

主角登場-爬蟲使用cookie

既然其他瀏覽器不能直接訪問網站,我們的爬蟲就更不能了,所以怎樣讓爬蟲使用驗證使用者身份資訊的cookie呢?馬上揭曉:

編寫爬蟲程式碼


# 爬蟲使用cookie
from urllib import request

if __name__ == '__main__':
    url = "http://www.renren.com/967487029/profile"

    headers = {
        # Cookie值從登入後的瀏覽器,拷貝,方法文章上面有介紹
        "Cookie": "anonymid=jkw22rj1lr18nw; depovince=GW; _r01_=1; JSESSIONID=abcUPkh_yMcQi56IB9avw; ick_login=79ce148f-80c5-4a79-ad1e-897e847d7f34; ick=d4c0f36e-a5b8-4063-b781-8a8474c4a289; t=07c15f420c005cec1ff760ee5370cfeb9; societyguester=07c15f420c005cec1ff760ee5370cfeb9; id=967487029; xnsid=bf077aca; XNESSESSIONID=6302ff129554; BAIDU_SSP_lcr=https://www.baidu.com/link?url=4ejhDX-FjIJI0Ma--EY03Dbwea0D_c1HhU7ExMXfUxO&wd=&eqid=c4ff527c00007cb4000000035b74fb58; wp_fold=0; jebe_key=d4adac05-f904-479c-bf00-a4b55d282a51%7C43e5f9c3c001a1d1846f8b82a462cefd%7C1534398658919%7C1; jebecookies=6031f512-d289-4dff-b1d6-aaa7849bd1ff|||||"
    }

    req = request.Request(url=url,headers=headers)

    rsp = request.urlopen(req)
    html = rsp.read().decode()

    with open("rsp.html","w",encoding="utf-8")as f:
        # 將爬取的頁面
        print(html)
        f.write(html)

執行結果

這裡寫圖片描述
現在我們可以在返回的html頁面看到自己的登入資訊了,也就說明cookie使用成功了

今天介紹的是手動拷貝cookie,後面會介紹如何自動的使用!

更多文章連結:Python 爬蟲隨筆


  • 本筆記不允許任何個人和組織轉載

相關文章