#前言:最近在学习python的selenium 模块,也想试着去写一些自动化操作。在过程中便遇到了,如何登录一次,第二次可以实现自动登陆的效果。

具体思路

如果对浏览器有一些了解就知道,用户登陆某个网站之后,服务器就会把用户登陆凭证存储在本地,方便下次不用手动登陆,但这个的登陆凭证是有时效性的,每个网站都不一样 ——- 这便就是cookie

我们可以利用 selenium模块的 get_cookies() ,pickic 模块的 pickic.dump 把用户的cookie 保存下来 , 再利用pickle.load() 把文件读取出来然后依次遍历加载到 selenium 模块的 add_cookie() 便可以实现自动登陆。

函数说明

get_cookies()    # 获取cooike 
add_cookie({"name": "key", "value": "value"}) # 添加cookie的名字和值
pickle.dump(obj, file)  # 将Python数据转换并保存到pickle格式的文件内
pickle.load(file)   # 从pickle格式的文件中读取数据并转换为python的类型

具体代码

from selenium import webdriver  # 导入模块
import pickle
import os

log_url='' #要登录的网站

class log:
def __init__(self):
self.Loginstatus=1 # 创造一个类 并构造一个初始化函数 定义一个登录初始化状态为1 等于1时说明已经登陆使用cookie登陆 为0时则需要登陆
seif.driver=webdriver.Firefox() # 打开浏览器

def login(self):
if self.loginstatus == 0
seif.driver.get(log_url) # 登陆状态为0 需要登陆
elif self.loginstatus == 1
if not os.path.exists('cookie.pkl'): # 判段没有 cookie.plk 就调通 set_cookie函数,反之调用get_cookie
set_cookie()
else:
get_cookie()


def set_cookie(self): # 这时判断文件中没有cookies.plk 文件便跳到登陆
seif.dirver.get(log_url) #登陆
pickle.dump(seif.dirver.get_cookies(),open('cookies.plk','wb') #使用get_cookies()获取cookie 再用 pickle.dum保存为一个plk文件


def get_cookie(self):
seif.dirers.get(loh_url)
cookie = pickle.load(open('cookies.plk','rb')) #使用pickle读取cookies.pkl 文件 并赋值给cookie
for cookies in cookie # 循环遍历cookie 并放入 cookies中
cookie_tie={
"name": "cookies.get('name')", # 因为cookie 有很多条数据每条数据样所对应的name 和 value 值 不一样 所以用get获取值。循环加入进去 实际上用不到 所有cookie数据
"value": "cookies.get('value')
}
self.driver.add_cookie(cookie_tie) # 最后载入进去




if __main__ == '__name__' #相当于c语言中的main 函数
con=log() # 实例化这个类
con.login() # 调用登陆函数