1. 程式人生 > 程式設計 >selenium中get_cookies()和add_cookie()的用法詳解

selenium中get_cookies()和add_cookie()的用法詳解

在用selenium爬取網頁的時候,有時候需要登陸,這時候用selenium獲取cookie和攜帶cookie是很方便的,獲取cookie可以通過內建的函式get_cookies(),它得到的是一組cookie,是由cookie組成的列表。單個的cookie是字典組成的,所有get_cookies()返回值是由字典組成的列表。

dictCookies = browser.get_cookies()
jsonCookies = json.dumps(dictCookies)
# print(jsonCookies)
with open('anquan.txt','w') as f:
  f.write(jsonCookies)

注意:這個jsonCookies是一個列表,是一個完整的cookie。

{'name': 'QCARJSESSIONID','value': 'BBmPcsfClCknfQX1cN2MLMgKXZGtFWqsBvjN9mbM9tmbL38hMmw4!1426878101','path': '/','domain': 'qcar.apiins.com','secure': False,'httpOnly': True}
{'name': 'BIGipServercar_qcar_poool','value': '1191316140.16671.0000','httpOnly': False}
{'name': 'chinainsuranceJSESSIONID','value': 'rkgncsfG8pnrhh8x1CvNy46zHplyLkTjyv1LL2hk4wDrkD9Mjz9Y!2078734058','httpOnly': True}
{'name': 'BIGipServercar_core_pool','value': '1191316140.17951.0000','httpOnly': False}

這樣就獲取到了cookie,那麼如何使用呢,我們讓瀏覽器物件攜帶cookies就行了,這時候用另外一個函式add_cookie()

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了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。