cookie: 一種客戶端會話技術,客戶登錄成功後,服務端將可識別用戶的憑證傳到客戶端,由客戶端負責保存維護。一般會設定一定有效時長,在有效時長內,客戶無需再次進行登錄操作,可直接攜帶cookie
登錄。
本文僅演示攜帶cookie登陸,所以cookie通過手動獲取。如何自動獲取豆瓣的cookie,請看 selenium登錄豆瓣網
1、手動登陸,獲取cookie
手動將cookie複製下來。得到這樣的數據:
name1=data1;name2=data2;name3=data3;…
2、cookie數據解析
將得到的cookie數據,轉爲字典
格式
cookie_info = 'name1=data1;name2="data2"'
cookie_list = [info.strip().split('=') for info in cookie_info.split(';')]
cookies = {data[0]:data[1].replace('"','') for data in cookie_list}
print(cookies)
結果:
{'name1': 'data1', 'name2': 'data2'}
3、攜帶cookie登陸
import requests
cookie_info = 'your cookiedata'
cookie_list = [info.strip().split('=') for info in cookie_info.split(';')]
cookies = {data[0]:data[1].replace('"','') for data in cookie_list}
url = 'https://www.douban.com/'
headers = {
'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5',
}
html = requests.get(url,headers=headers,cookies=cookies).content.decode()
print(html)
結果:
如圖,在打印的html中能看到自己的賬號名稱,證明登陸成功了。
思考:
登陸成功後,訪問網站的其他頁面,一般也需要攜帶cookie,才能進行訪問。當然,我們可以在每個請求中,都加上cookie,但這無疑顯得有些繁瑣。能否在請求的時候自動攜帶呢?這就需要session
來幫忙了。