前言

爬虫方向的小伙伴们都知道网页爬虫经常遇到的问题就是登录账户,有些简单的网站我们可以简单的send key来输入账户密码就可以登录,但是有很多网站需要验证码之类的就不太好用了,这时候就体现到了cookie登录的优点了,前段时间网上搜了搜,发现没有什么完整的教程,本文就使用selenium来cookie登录为例做一个简单的教程。

  • 环境准备
  • python3
  • selenium
  • chromedriver
    selenium就不再过多解释了,我们在使用的过程中唯一需要注意的就是自己浏览器版本与driver版本的问题,至于具体对应版本,在chromedriver下载页面中会有显示

代码编写

这次就以 百度 为例,www.baidu.com 首先使用 selenium 打开百度看一下未登录是什么样子

代码:

from selenium import webdriver#填写webdriver的保存目录
driver = webdriver.Chrome('../chromedriver.exe')#记得写完整的url 包括http和https
driver.get('https://www.baidu.com')

这就是直接打开的样子,我们想要将网页变成登录后的样子,如下图

这是登录账号后的样子,那么我们该怎么获取cookie以达到登录效果呢?

我们可以直接使用F12查看当前网页的cookie,但是你会发现直接获取到的并不是那么好插入到selenium中,因为cookie在浏览器中实际是这个样子的

它需要额外添加一些东西,那么我们该如何获取呢?其实也很简单,最简单的方法就是我们首先使用selenium手动登录一下然后获取cookie值保存到本地,之后再登陆的时候直接调用本地cookie就可以了

怎么获取呢?selenium有一个 get_cookies() 函数可以帮我们获取当前网页的cookie值,所以我们首先编写一个 getcookies.py 文件来获取cookie值

from selenium import webdriver
import time
import json#填写webdriver的保存目录
driver = webdriver.Chrome('../chromedriver.exe')#记得写完整的url 包括http和https
driver.get('https://www.baidu.com')#程序打开网页后20秒内手动登陆账户
time.sleep(20)with open('cookies.txt','w') as cookief:#将cookies保存为json格式cookief.write(json.dumps(driver.get_cookies()))driver.close()

运行程序后如下图 点击登录 输入账号密码,输入验证码(程序内写的20秒完成操作,因为20秒后程序将获得cookies)

现在发现项目目录下已经有了一个名称为 cookies.txt 的文件 ,现在我们已经将cookies保存到了本地,现在我们来编写程序使用cookies

编写 addcookies.py 文件

from selenium import webdriver
import time
import json#填写webdriver的保存目录
driver = webdriver.Chrome('../chromedriver.exe')#记得写完整的url 包括http和https
driver.get('https://www.baidu.com')
#首先清除由于浏览器打开已有的cookies
driver.delete_all_cookies()with open('cookies.txt','r') as cookief:#使用json读取cookies 注意读取的是文件 所以用load而不是loadscookieslist = json.load(cookief)for cookie in cookieslist:driver.add_cookie(cookie)

运行,有小伙伴可能会发现现在出问题了,在插入cookie的时候 返回错误

selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: invalid ‘expiry’
这个 expiry 是什么呢? 它是cookie的生命周期,也就是失效时间,为什么在这里会报错呢?我们有两种解决办法

#方法1 将expiry类型变为int(其实不太清楚为什么变为int就可以)
#方法2删除该字段
重新编写代码:

from selenium import webdriver
import json#填写webdriver的保存目录
driver = webdriver.Chrome('../chromedriver.exe')#记得写完整的url 包括http和https
driver.get('https://www.baidu.com')
#首先清除由于浏览器打开已有的cookies
driver.delete_all_cookies()with open('cookies.txt','r') as cookief:#使用json读取cookies 注意读取的是文件 所以用load而不是loadscookieslist = json.load(cookief)# 方法1 将expiry类型变为intfor cookie in cookieslist:#并不是所有cookie都含有expiry 所以要用dict的get方法来获取if isinstance(cookie.get('expiry'), float):cookie['expiry'] = int(cookie['expiry'])driver.add_cookie(cookie)#方法2删除该字段# for cookie in cookieslist:#     #该字段有问题所以删除就可以  浏览器打开后记得刷新页面 有的网页注入cookie后仍需要刷新一下#     if 'expiry' in cookie:#         del cookie['expiry']#     driver.add_cookie(cookie)

这时候发现没有报错了,可以发现,怎么还是登录之前的页面啊?为什么cookies插入成功了却不是登陆后的页面?

别急,这时候我们点击一下浏览器的刷新就会发现其实已经登录上去了只不过页面没有变化而已,所以一定记得点刷新,现在我们就成功的使用cookie完成了登录操作。

参考:https://www.cnblogs.com/yikemogutou/p/12906145.html
https://www.cnblogs.com/1211-1010/articles/11090727.html

selenium cookie 登录相关推荐

  1. python通过cookie绕过验证码_Python Selenium Cookie 绕过验证码实现登录示例代码

    之前介绍过通过cookie 绕过验证码实现登录的方法.这里并不多余,会增加分析和另外一种方法实现登录. 1.思路介绍 1.1.直接看代码,内有详细注释说明 # FileName : Wm_Cookie ...

  2. python+selenium获取cookie session_Python Selenium模拟登录成功后,使用此cookie、利用requests库进行get时,提示“非法登陆”。...

    一. 步骤概述 a. 模拟登录学校选课系统(使用Selenium库登陆http://xk.suibe.edu.cn/xsxk/login.xk) b. 取得cookie后传入requests的sess ...

  3. 微博自动化登录(selenium+cookie)

    文章目录 前言 一.首先分析网页 二.编写代码 总结 前言 本次呢我讲俩种方法,一种是单纯的selenium自动化登录,这种方法经测试不太行.因为单纯使用账号密码登录微博现在行不通,还需要手机验证码. ...

  4. selenium中使用cookie登录

    ✍转载自:https://www.cnblogs.com/CYHISTW/p/11685846.html 前言 爬虫方向的小伙伴们都知道网页爬虫经常遇到的问题就是登录账户,有些简单的网站我们可以简单的 ...

  5. selenium模拟登录淘宝

    基于selenium模拟登录淘宝读取cookie 1. from selenium import webdriver import time from selenium.webdriver.commo ...

  6. 使用python+selenium+Firefox登录大众点评

    目标: 控制浏览器点击.输入,登录大众点评 环境: python-3.5.selenium-3.12.0.Firefox-59.0.3(32位).geckodriver-v0.20.1-win64 步 ...

  7. selenium 获取登录cookies,并添加cookies自动登录

    create-time : 2018-12-18 12:05:30 selenium 获取登录cookies,并使用之 selenium 获取登录cookies selenium 使用 cookies ...

  8. 反爬-今日头条cookie登录和豆瓣session维持会话

    #1.利用selenium添加cookie登录头条 注意点就是添加cookie方法和格式,add_cookie,字典形式 注意selenium等待时间加载 from selenium import w ...

  9. python实现滑块验证功能_python3.8.1+selenium实现登录滑块验证功能

    python3.8.1+selenium解决登录滑块验证的问题,先给大家分享一个效果图,感觉不错,可以参考实现代码. 这里的滑块是qq邮箱的截图,如图所示,可以作为同类滑块验证的参考. "& ...

最新文章

  1. java基础-Eclipse开发工具介绍
  2. cuda安装配置VS2013
  3. 三网融合情况下,实时语音通信技术的研究
  4. 圆弧半径计算图解_刀尖圆弧半径补偿G40,G41,G42 左补偿右补偿你真的能搞清楚吗...
  5. android之常用知识点(一)
  6. 利用云数据库 MongoDB ,为你的业务创建单节点实例
  7. 容器弹性云底层原理揭秘
  8. wait和notify的用法
  9. 构建 Netflix 分布式追踪(tracing)体系
  10. 解决SpringBoot集成Redis出现RedisConnectionException: Unable to connect to 192.168.64.100:6379
  11. DirectX版本问题
  12. Mac开发者福利来了!安利一波各领域不错的软件工具
  13. C++ 万年历、生肖判断、计算第几天
  14. stm32 iap升级
  15. 图像原点矩、二阶中心矩物理意义推导
  16. 二、8【FPGA】Verilog中锁存器(Latch)原理、危害及避免
  17. 硬核拆台!宏彦获水,一脸懵逼:百度李彦宏遭当众泼水,一开始肇事者就在全程直播!!
  18. 【国科大矩阵论】2021秋季叶世伟矩阵论考试计算题
  19. GIS添加图层、查询详细
  20. 完整的生产车间管理流程是怎样的?六大步骤分享

热门文章

  1. 陌陌跻身移动广告平台四强
  2. 怎么看B站充电人数多的UP主排名数据?飞瓜轻数2022年1月UP主排行榜单发布
  3. 申请FSC认证,哪种方案适合你?
  4. 360与瑞星今日上演“生死狙击”
  5. 给女朋友的60种道歉的话...
  6. 前端开发需要会的PS抠图详细步骤
  7. 苹果Windows装oracle10,苹果MacBook安装Win10系统教程
  8. 退伍军人的自杀困境,AI会是一剂特效药吗?
  9. c语言 引用定义变量,如何在c语言中定义及引用全局变量?
  10. oppo手机android功能,升级Android 7.1之后,OPPO手机迎来了这些新功能