当我们每次使用chromedriver的时候,此时相当于一个无痕的浏览器模式,为了方便后期操作,所以需要提前提取cookies。
逻辑说明:首先打开浏览器,然后请求所需的网址,等待20秒(留出来手动登录的时间),然后提取cookie,在关闭浏览器,会在代码程序,同目录生成一个cookies.txt
代码:
from selenium import webdriver
import time
import json
#cookie保存到本程序的同目录下
# 填写webdriver的保存目录
driver = webdriver.Chrome()
# 记得写完整的url 包括http和https
driver.get('http://www.baidu.com')
# 延迟20秒
time.sleep(20)
with open('cookies.txt','w') as f:
# 将cookies保存为json格式
f.write(json.dumps(driver.get_cookies()))
driver.close()#关闭浏览器
使用已经提取的cookies
from selenium import webdriver
import json
import os
import time
from selenium.common.exceptions import NoSuchElementException
import time
# 打开网址
Chrome = webdriver.Chrome()
# 等待3秒
Chrome.implicitly_wait(3)
# wb.maximize_window()
Chrome.get('https://www.baidu.com')
time.sleep(5)
# 向浏览器添加保存的cookies
try:
cookies = json.load(open("cookies.txt", "rb"))
for cookie in cookies:
cookie_dict = {
"domain": cookie.get('domain'),
'name': cookie.get('name'),
'value': cookie.get('value'),
"expires": "",
'path': '/',
'httpOnly': True,
'HostOnly': False,
'Secure': False}
Chrome.add_cookie(cookie_dict)
except Exception as e:
print(e)
Chrome.refresh()