在用selenium爬取網頁的時候,有時候需要登陸,這時候用selenium獲取cookie和攜帶cookie是很方便的,獲取cookie可以通過內置的函數get_cookies(),它得到的是一組cookie,是由cookie組成的列表。單個的cookie是字典組成的,所有get_cookies()返回值是由字典組成的列表。
1
2
3
4
5
|
dictCookies = browser.get_cookies() jsonCookies = json.dumps(dictCookies) # print(jsonCookies) with open ( 'anquan.txt' , 'w' ) as f: f.write(jsonCookies) |
注意:這個jsonCookies是一個列表,是一個完整的cookie。
1
2
3
4
|
{ 'name' : 'QCARJSESSIONID' , 'value' : 'BBmPcsfClCknfQX1cN2MLMgKXZGtFWqsBvjN9mbM9tmbL38hMmw4!1426878101' , 'path' : '/' , 'domain' : 'qcar.apiins.com' , 'secure' : False, 'httpOnly' : True} { 'name' : 'BIGipServercar_qcar_poool' , 'value' : '1191316140.16671.0000' , 'path' : '/' , 'domain' : 'qcar.apiins.com' , 'secure' : False, 'httpOnly' : False} { 'name' : 'chinainsuranceJSESSIONID' , 'value' : 'rkgncsfG8pnrhh8x1CvNy46zHplyLkTjyv1LL2hk4wDrkD9Mjz9Y!2078734058' , 'path' : '/' , 'domain' : 'qcar.apiins.com' , 'secure' : False, 'httpOnly' : True} { 'name' : 'BIGipServercar_core_pool' , 'value' : '1191316140.17951.0000' , 'path' : '/' , 'domain' : 'qcar.apiins.com' , 'secure' : False, 'httpOnly' : False} |
這樣就獲取到了cookie,那么如何使用呢,我們讓瀏覽器對象攜帶cookies就行了,這時候用另外一個函數add_cookie()
1
2
3
4
5
6
7
8
|
with open ( 'anquan.txt' , 'r' , encoding = 'utf8' ) as f: listCookies = json.loads(f.read()) print ( '%%%%%%%%%%%%%%%%%' , listCookies) for cookie in listCookies: obj.add_cookie(cookie) obj.get( 'https://qcar.apiins.com/qcar' ) # 讀取完cookie刷新頁面 obj.refresh() |
這樣,我們就可以攜帶cookie,實現免登陸。有人說,你直接登陸不就完事了嗎?有些應用場景還是用的到的,比如說驗證碼識別率不高,比如監視爬蟲,定時爬蟲,要求五分鐘爬一次,兩分鐘爬一次,每次登陸會很麻煩。這個時候我們可以分開,一個專門登陸抓取cookie,30分鐘更新一次cookie文件。另外一個讀取cookie文件就ok了。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:https://www.cnblogs.com/chaojiyingxiong/p/10210707.html