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

在用selenium爬取網頁的時候,有時候須要登錄,這時候用selenium獲取cookie和攜帶cookie是很方便的,獲取cookie能夠經過內置的函數get_cookies(),它獲得的是一組cookie,是由cookie組成的列表。單個的cookie是字典組成的,全部get_cookies()返回值是由字典組成的列表。python

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

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

{'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()api

  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了。瀏覽器

相關文章
相關標籤/搜索