Python用selenium获取Cookie并用于登录。
生活随笔
收集整理的這篇文章主要介紹了
Python用selenium获取Cookie并用于登录。
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
不能一味地看網上的代碼,Cookie代碼格式有的不一樣
selenium官網有自帶的中文教程,但是有點不仔細。中文官方連接在這3-7
用貼吧舉個例吧
上連接 http://www,baidu.com
from selenium import webdriver from selenium.webdriver.common import keys import time import json import osclass TieBa:def __init__(self):self.driver = webdriver.Chrome()self.url = 'https://www.baidu.com'def main_html(self):self.driver.get(self.url)self.driver.find_element_by_xpath('//*[@id="s-top-left"]/a[6]').click() # 在百度頁面點擊貼吧。self.driver.switch_to.window(self.driver.window_handles[1])self.driver.find_element_by_xpath('//*[@id="com_userbar"]/ul/li[4]/div/a').click() # 掃碼登錄time.sleep(10)def get_cookie(self):time.sleep(3)try:dict_cookie = self.driver.get_cookies() # selenium自帶的get_cookies。json_cookie = json.dumps(dict_cookie)with open("TieBaCookies2.txt", 'w+') as f:f.write(json_cookie)print("保存成功")except:print("保存失敗")def load_cookie(self):time.sleep(2)try:with open("TieBaCookies2.txt", 'r', encoding='UTF-8') as f:listCookies = json.loads(f.read())for cookie in listCookies:cookie_dict = {"domain": "tieba.baidu.com",'name': cookie.get('name'),'path': '/','value': cookie.get('value'),}self.driver.add_cookie(cookie_dict)self.driver.refresh()except:print("打開失敗")if __name__ == '__main__':tb = TieBa()tb.main_html()if not os.path.exists('TieBaCookies2.txt'):tb.get_cookie()tb.load_cookie()else:tb.load_cookie()最容易出岔子的地方來了。
try:with open("TieBaCookies2.txt", 'r', encoding='UTF-8') as f:listCookies = json.loads(f.read())for cookie in listCookies:cookie_dict = {# 設置Cookie的格式"domain": "tieba.baidu.com",'name': cookie.get('name'),'path': '/','value': cookie.get('value'),}self.driver.add_cookie(cookie_dict)self.driver.refresh()except:print("打開失敗")很多人出錯都是格式不正確上面,首先獲取cookies之后先觀察格式。
例如上面貼吧的cookie格式就是
然后按格式輸入,中間可能會報錯,這個要試一試(先把拋出異常去掉),例如我多添加了個
報錯顯示如下
解決方法 : 刪除掉即可。
總結
以上是生活随笔為你收集整理的Python用selenium获取Cookie并用于登录。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python用selenium简单方法处
- 下一篇: 解决selenium用cookies时候