大家好,这篇文章介绍了如何通过selenium利用cookie免密登陆网站(第一次写文章 )
zzh2027/zzh2027.github.iogithub.comfrom selenium import webdriver
from selenium.webdriver.common.keys import Keys## 模拟键盘用的包
from selenium.webdriver.support.ui import Select##用来操作下拉列表中的选择题
from selenium.common.exceptions import ElementClickInterceptedException, NoSuchElementException## 找不到元素会报的错
import time##不能一直爬取页面所以需要睡一会儿
import json##用来保存网站登录cookie,以后可以免密登录网站
将必要的包安装完后,我们可以打开浏览器了!
## 打开一个空白浏览器
driver = webdriver.Firefox()
## 进入airbnb官网
url = "https://www.airbnb.com/"
driver.get(url)
## 窗口最大化
driver.maximize_window()
## 通过xpath 找到并点击登录按钮
login_xpath = "/html/body/div[4]/div/div/div/div[1]/div[1]/div/header/div/div[3]/nav/div[1]/a[4]"
driver.find_element_by_xpath(login_xpath).click()
在网站中找寻元素主要用三个方法
## 选择用邮箱登录
email_xpath = "/html/body/div[11]/section/div/div/div[2]/div/div[2]/button"
driver.find_element_by_xpath(email_xpath).click()
## 输入email地址和密码
## inspect后这俩的id很独特,所以直接用了
email_id = "email"
pw_id = "password"
your_email = input("please enter your email address")
your_pw = input("please enter your password")
e = driver.find_element_by_id(email_id)
e.clear()
e.send_keys(your_email)
p = driver.find_element_by_id(pw_id)
p.clear()
p.send_keys(your_pw)
## 点击登录按钮
enter_xpath = "/html/body/div[11]/section/div/div/div[2]/div/form/div[3]/button"
driver.find_element_by_xpath(enter_xpath).click()
这样子我们先通过自己的信息登陆Airbnb,然后再保存cookie用来下次自动化登陆!
## 保存cookie
cookies = driver.get_cookies()
#print(cookies)
## 新建json文件,将cookies保存进去
file = open("cookies.json", "w", encoding = 'utf-8')
json.dump(cookies, file, ensure_ascii = False)
file.close()
cookie的格式是json,即List[dict]
保存完cookie,我们就退出登录呗,一会儿通过cookie再登陆回来~
## 将浏览器当前cookies删除,这样子就退出登录了
driver.delete_all_cookies()
## 刷新一下才会退出
driver.refresh()
读取本地json文件格式的cookie!
## 读取本地cookies文件
cookies = open("cookies.json", "r", encoding = "utf-8")
cookies = json.load(cookies)
前面提到cookie这个文件是List[dict],那么里面有很多dict,所以要用for循环一个个塞进去
## 将cookie一个个塞进去
for cookie in cookies:
driver.add_cookie(cookie)
## 刷新一下浏览器就登陆了
driver.refresh()