免密登录_以Airbnb为例,用selenium免密登录网站

大家好,这篇文章介绍了如何通过selenium利用cookie免密登陆网站(第一次写文章 )

zzh2027/zzh2027.github.io​github.com
4a633c2a7c5bbce263e7294d2932eaa2.png
from 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()

在网站中找寻元素主要用三个方法

d63b7666bf53d74d013d3ae0b66717b3.png
## 选择用邮箱登录
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()

感谢你的观看,如果觉得有帮助,可以进入我的github给个小星星!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值