想法:
先使用selenium打开网页后,手动进行一次登录,此时浏览器通过cookie保存了我们的登录信息,然后get_cookies()获取当前的cookies。
这时候的cookies数据是保存在内存里面,如果需要之后的使用,就需要将cookies保存在本地,使用的是json.dumps()进行保存。
保存之后后期需要使用cookies,则使用json.loads()转为字典,然后使用add_cookies()加载网页cookies。达到免登录的目的。
以百度为例
源码:
获取并保存cookies
from selenium import webdriver
import json,time
d.webdriver.Chrome()
d.get('http://baidu.com')
time.sleep(2)
input('输入任意继续...') #此时在浏览器里面手动登录
cookies = d.get_cookies()
jsoncookies = json.dumps(cookies) #转为json
with open('cookies','w') as f:
f.write(jsoncookies) #将内存数据写入磁盘
d.close() #关闭并释放内存是个好习惯
加载本地cookies至浏览器
from selenium import webdriver
import json,time
d.webdriver.Chrome()
d.get('http://baidu.com')
time.sleep(2)
d.delete_all_cookies() #删除当前所有cookie
with open('cookies' ,'r' ,encoding = 'utf-8') as f:
listcookies = json.loads(f.read()) #读取磁盘文件保存的cookie数据
for cookie in listcookies: #添加cookie
d.add_cookies({
'domain': '.baidu.com', #注:此处baidu.com前,需要带点
'name': cookie['name'],
'value': cookie['value'],
'path': '/',
'expires': None
})
d.get('http://biadu.com') #刷新网页,查看是否cookie添加成功
time.sleep(10)
d.close() #关闭浏览器