当前位置:网站首页>selenuim使用cookie登录京东
selenuim使用cookie登录京东
2022-08-11 05:13:00 【weixin_42576837】
目前学习到的一种登录方法:
- 首先使用selenuim创建的浏览器对象打开京东的登录页面
- 在登录页面之后设置等待,我们手动扫码登录
- 扫码登录之后,就产生了含有本用户信息的cookie,保存这个cookie
- 保存cookie到本地,下次登录的使用可以直接读取,但是cookie是有有效期的
- 登录的时候读取本地cookie,使用drive.add_cookies()添加cookie,之后刷新页面,可以发现确实登录了。
代码:
from selenium import webdriver
import time
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import json
class CookieLogin():
def __init__(self):
self.drive = webdriver.Chrome()
self.url = 'https://passport.jd.com/new/login.aspx?/'
#先手动登录,让程序获取到cookie,保存下来
def getcookie(self):
#首先直接访问登录的页面 passport.jd.com
self.drive.get(self.url)
#扫码登录
#登录之后的页面会跳转到这里,让浏览器等待,直到url完全匹配
url='https://www.jd.com/'
WebDriverWait(self.drive,20).until(EC.url_to_be(url))
#登录之后停2秒
time.sleep(2)
#获取到的cookies是列表
cookieList = self.drive.get_cookies()
#转成字符串
cookieStr = json.dumps(cookieList)
# print(cookieStr)
with open('data/Jdcookie.txt', 'w') as f:
f.write(cookieStr)
print('cookie已写入')
print(self.drive.current_url)
self.drive.close()
#读取cookie
def readcookie(self):
self.drive.get('https://www.jd.com/')
with open('data/Jdcookie.txt',mode='r',encoding='utf-8') as f:
cookie = f.read()
#读取到的是字符串类型,loads之后就变成了python中的字典类型
cookie = json.loads(cookie)
#先把所有的cookie全部删掉
self.drive.delete_all_cookies()
for item in cookie:
print(type(item))
print(item)
self.drive.add_cookie(item)
#是一个列表内套字典的形式
self.drive.refresh()
time.sleep(5)
self.drive.close()
if __name__ == '__main__':
login = CookieLogin()
# login.getcookie()
login.readcookie()
注意的点:
cookieList = self.drive.get_cookies() 获取到的是cookies是python中的列表格式<class ‘list’>,然后使用json.dumps()转为字符串,然后把这个字符串保存到文件中。(直接使用json.dump()可以直接存到文件中),所以:
#转成字符串
cookieList = self.drive.get_cookies()
cookieStr = json.dumps(cookieList)
# print(cookieStr)
with open('data/Jdcookie.txt', 'w') as f:
f.write(cookieStr)
可以替换为
#转成字符串
cookieList = self.drive.get_cookies()
# print(cookieStr)
with open('data/Jdcookie.txt', 'w') as f:
json.dump(cookieList,f)
实现的效果是一样的。
这个时候,cookie就已经写到文件中了:
data/Jdcookie.txt

很长的一段。可以使用网页的json格式化输出:
这时候,有了cookie就可以直接登录京东了。readcookie函数从文件中读取刚才的cookie,文件中存储的是json字符串,读取之后的类型还是json字符串类型,需要使用json.loads()把它转为为python中的对象。转换之后是 列表内嵌套字典的形式,循环遍历列表,取出每一个字典,每一个字典就是一条cookie,一条条的添加到浏览器的cookies中。add_cookie(self, cookie_dict)接收的参数就是字典类型。
边栏推荐
- MySQL数据库管理
- guava RateLimiter均匀限流
- The use of async (asynchronous) and await
- In the closing pages/uninstall (unload) sends a request to the server before the document
- 金仓数据库 KingbaseGIS 使用手册(6.8. 几何对象输入函数)
- arraylist之与linkedlist
- 分库分表之sharding-proxy
- K8s Review Notes 7--K8S Implementation of Redis Standalone and Redis-cluster
- 【嵌入式开源库】使用J-Link打印日志,让你节省一个打印串口
- Switch and Router Technology-33-Static NAT
猜你喜欢
![[Embedded open source library] The use of cJSON, an efficient and streamlined json parsing library](/img/11/26ec988a23b239d7b01e2e29e3e32d.png)
[Embedded open source library] The use of cJSON, an efficient and streamlined json parsing library

Switch and Router Technology - 32 - Named ACL

leetcode 9. Palindromic Numbers

IDEA模板总结

Thymeleaf

Switch and Router Technology - 28 - NSSA Areas for OSPF

【ARM】rk3399挂载nfs报错

shell 脚本编程---入门

Internet Protocol 1

Django--20实现Redis支持、上下文以及上下文和接口的交互
随机推荐
pytorch基础之 pytorch 模型开发模板
用白嫖的Adobe正版软件,减少应届毕业生的慢就业、不就业等现象
什么是三次握手和四次挥手(清晰易懂)
DS220702-0707作业
C language antithesis: who is the murderer!
HAVE FUN | “SOFA 星球”飞船计划、源码解析活动最新进展
基于 TF-IDF 文本匹配实战详细教程 数据+代码 可直接运行
K8s Review Notes 7--K8S Implementation of Redis Standalone and Redis-cluster
原生态mongo连接查询代码
Switch and Router Technology - 32 - Named ACL
@Resource和@Autowired的区别
普林斯顿微积分读本05第四章--求解多项式的极限问题
MySQL事务的概念
Idea 2021.3.3版本文件目录展开
将double类型的数据转为字符串
Oracle常用语句归纳_持续更新
Redis详解
Mysql入门练习
Switch and Router Technology-31-Extended ACL
for循环使用多线程优化