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

肖朋偉發表於2018-09-06

Python爬蟲教程-13-爬蟲使用cookie爬取登入後的頁面(下)

  • 自動使用cookie的方法,告別手動拷貝cookie
  • http模組包含一些關於cookie的模組,通過他們我們可以自動的使用cookie
    - CookieJar
    • 管理儲存Cookie,向傳出的http請求新增cookie
    • 這裡Cookie儲存在記憶體中,CookieJar例項回收後cookie將消失
      • FileCookieJar(filename, delayload=None, policy=None)
    • 使用檔案管理cookie
    • filename是儲存cookie的檔案
      • MozillaCookieJar(filename, delayload=None, policy=None)
    • 建立Mocilla瀏覽器cookie.txt相容的FileCookieJar例項
    • 火狐Firefox瀏覽器需要單獨處理
      • LwpCookieJar(filename, delayload=None, policy=None)
    • 建立於libww-per標準相容的Set-Cookie3格式的FileCookieJar
      • 它們之間的關係: CookieJar-->FileCookieJar-->MozillaCookieJar & LwpCookieJar

利用CookieJar訪問人人網

  • 自動使用cookie登入,使用步驟:
    • 1.開啟登入頁面後自動通過使用者名稱密碼登入
    • 2.自動提取反饋回來的cookie
    • 3.利用提取的cookie登入個人資訊頁面
    • 建立cookiejar例項
    • 生成cookie的管理器
    • 建立http請求管理器
    • 建立https請求的管理器
    • 建立請求管理器
    • 通過輸入使用者名稱和密碼,獲取cookie
  • 案例13cookiejar檔案:https://xpwi.github.io/py/py%E7%88%AC%E8%99%AB/py13cookiejar.py
# 使用cookiejar完整程式碼
from urllib import request,parse
from http import cookiejar

# 建立cookiejar的例項
cookie = cookiejar.CookieJar()
# 常見cookie的管理器
cookie_handler = request.HTTPCookieProcessor(cookie)

# 建立http請求的管理器
http_handler = request.HTTPHandler()

# 生成https管理器
https_handler = request.HTTPSHandler()

# 建立請求管理器
opener = request.build_opener(http_handler,https_handler,cookie_handler)

def login():
    # 負責首次登入,輸入使用者名稱和密碼,用來獲取cookie
    url = 'http://www.renren.com/PLogin.do'

    id = input('請輸入使用者名稱:')
    pw = input('請輸入密碼:')

    data = {
        # 從input標籤的name獲取引數的key,value由輸入獲取
        "email": id,
        "password": pw
    }
    # 把資料進行編碼
    data = parse.urlencode(data)
    # 建立一個請求物件
    req = request.Request(url,data=data.encode('utf-8'))
    # 使用opener發起請求
    rsp = opener.open(req)

# 以上程式碼就可以進一步獲取cookie了,cookie在哪呢?cookie在opener裡
def getHomePage():
    # 地址是用在瀏覽器登入後的個人資訊頁地址
    url = "http://www.renren.com/967487029/profile"

    # 如果已經執行login函式,則opener自動已經包含cookie
    rsp = opener.open(url)
    html = rsp.read().decode()

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

if __name__ == '__main__':
    login()
    getHomePage()

執行結果

看到自己的個人資訊就是說明登入成功了
這裡寫圖片描述

補充:在爬蟲程式碼輸入使用者名稱和密碼的使用方法

  • 1.開啟網站首頁,登入表單頁面
  • 2.在輸入使用者名稱和密碼的地方,【右鍵檢查】,或者檢視原始碼
  • 3.找到登入表單【form標籤的action屬性】,拷貝地址
  • 4.提示:如果不能直接拷貝,【雙擊】地址,Ctrl+C
  • 操作截圖:
    這裡寫圖片描述
  • 5.找到使用者名稱和密碼的【input標籤的name屬性】,構建引數時使用
  • 6.然後在程式碼中,構建data引數,模擬post請求
# 程式碼片段
url = 'http://www.renren.com/PLogin.do'

    data = {
        # 引數使用正確的使用者名稱密碼
        "email": "18322295195",
        "password": "oaix51607991"
    }
    # 把資料進行編碼
    data = parse.urlencode(data)

爬蟲使用cookie,自動獲取cookie解介紹到這裡了

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


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

相關文章