爬蟲入門:Cookie管理

場景:人人網訪問其他人主頁需要登陸,人人網的登陸不需要驗證碼,所以初始階段可以通過想請求中傳入參數,先登陸一次人人網,然後記錄下Cookie,這樣下次就可以利用這個Cookie直接訪問想要訪問的他人主頁。

#導庫
from http.cookiejar import MozillaCookieJar
from http.cookiejar import CookieJar
from urllib import request
from urllib import parse

#人人網登陸網址
url_login = ‘http://www.renren.com/PLogin.do’
#要訪問的他人主頁地址
url_visit = ‘http://www.renren.com/880151247/profile’
headers = {
‘User-Agent’:‘Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36’
}
#人人網的賬號密碼作爲數據參數傳入實現登陸
#email和password兩個詞綴不是自己取的,需要查看網頁源代碼確定輸入進輸入框的變量名稱
data = {
‘email’:‘[email protected]’,
‘password’:‘shenyihua1314’
}

#先使用賬號密碼實現登陸以獲取需要的Cookie
#首先使用MozillaCookieJar創建存儲Cookie的文件
cookiejar = MozillaCookieJar(‘cookie.txt’)
#創建用於訪問的handler和opener,將此次訪問的cookie存儲在cookie.txt中
handler = request.HTTPCookieProcessor(cookiejar)
opener = request.build_opener(handler)
#使用Request創建一個訪問,傳入headers和data等信息,其中data需要先使用urlencode將data數據先進行適用於url的編碼,(漢字變成%EA這種),再將這個字節流用utf-8編碼成str
req = request.Request(url_login,headers=headers,data=parse.urlencode(data).encode(‘utf-8’))
opener.open(req)
#訪問結束,將Cookie使用save函數存儲好,ignore_discard=True就算Cookie信息過期也存,沒有這個參數可能就不會存儲這個cookie
cookiejar.save(ignore_discard=True)

#得到了登陸後的Cookie,現在使用這個Cookie來進行下一步的訪問
#創建一個新的cookiejar來接受上次登陸操作完存儲的Cookie
cookiejar2 = MozillaCookieJar(‘cookie.txt’)
#使用load來接收Cookie信息,記住這裏也要加上忽視過期的參數
cookiejar2.load(ignore_discard=True)
handler2 = request.HTTPCookieProcessor(cookiejar2)
opener2 = request.build_opener(handler2)
req2 = request.Request(url_visit,headers=headers)
resp = opener2.open(req2)
#實測成功訪問並爬取到大鵬董成鵬的個人主頁信息
print(resp.read().decode())

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