使用selenium如何实现自动登录

  回顾使用requests如何实现自动登录一文中,提到好多网站在我们登录过后,在之后的某段时间内访问该网页时,不会给出请登录的提示,时间到期后就会提示请登录!这样在使用爬虫访问网页时还要登录,打乱我们的节奏,并详细介绍了使用requests爬取网页时为实现自动登录获取键Cookie对应的值的过程。
  那么selenium如何实现自动登录呢?又如何获取键Cookie对应的值呢?

  开始之前我们先把项目创建好,如下:文件夹Day19下创建一个files文件夹用于存储爬取到的Cookie对应的值

在这里插入图片描述

一、selenium获取键Cookie对应的值

01_selenium获取cookie

from selenium.webdriver import Chrome# 1. 创建浏览器打开需要自动登录的网页
b = Chrome()
url = 'https://www.zhihu.com'
b.get(url)# 2. 留足够长的时间给人工完成登录
#(完成登录的时候必须保证浏览器对象指向的窗口能够看到登录成功的效果)# 进入网页后会有登录提示,手动扫码登录成功后,回到pycharm的输出区输入任意
# 字符给input,方便我们知道执行到什么地方了
input('已经完成登录:')# 3. 获取浏览器cookie保存到本地文件
cookies = b.get_cookies()
with open('files/zhihu.txt', 'w', encoding='utf-8') as f:f.write(str(cookies))

完成登录的时候必须保证浏览器对象指向的窗口能够看到登录成功的效果是针对如下情况:

在这里插入图片描述

  因为第一步创建浏览器是打开网页指向的是第一个标签页,要保证的是如果出现上述情况,我们希望是指向第二个页面,爬虫才能检测到我们已经登录成功了。可以在登录成功页面(第二个页面)刷新一下即可

将获取到的值存储进csv文件中后,我们可以点击files文件查看

在这里插入图片描述

二、selenium实现自动登录

02_selenium使用cookie

# 1. 从本地的cookie文件中获取cookie
with open('files/zhihu.txt', encoding='utf-8') as f:cookies = eval(f.read())# 2. 添加cookie
for x in cookies:b.add_cookie(x)# 3.重新打开网页
b.get('https://www.zhihu.com')# 为了不让程序停止,给一个input指令
input()
到这里我们就实现了使用selenium完成自动登录的操作了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/39620.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

item_get_sales-获取商品销量详情

一、接口参数说明: item_get_sales-获取商品销量详情,点击更多API调试,请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/taobao/item_get_sales 名称类型必须描述keyString是调用key&#xff08…

ACM模式刷Leetcode题目

139题单词拆分 链接: link #include<iostream> #include<sstream> #include<string> #include<vector> #include<algorithm> #include<unordered_set> using namespace std;int main() {// 实现输入第一行为s字符串。// 第二行为wordDic…

【代码随想录day22】爬楼梯

题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;2 解释&#xff1a;有两种方法可以爬到楼顶。 1. 1 阶 1 阶 2. 2 阶 示例 2…

Spring的三种异常处理方式

1.SpringMVC 异常的处理流程 异常分为编译时异常和运行时异常&#xff0c;编译时异常我们 try-cache 进行捕获&#xff0c;捕获后自行处理&#xff0c;而运行时异常是不 可预期的&#xff0c;就需要规范编码来避免&#xff0c;在SpringMVC 中&#xff0c;不管是编译异常还是运行…

java:JDBC

文章目录 什么是JDBCJDBC使用步骤详解各个对象DriverManagerConnectionStatementResultSetPreparedStatement JDBC控制事务操作步骤示例 什么是JDBC 我们知道&#xff0c;数据库有很多种&#xff0c;比如 mysql&#xff0c;Oracle&#xff0c;DB2等等&#xff0c;如果每一种数…

C# WPF 中 外部图标引入iconfont,无法正常显示问题 【小白记录】

wpf iconfont 外部图标引入&#xff0c;无法正常显示问题。 1. 检查资源路径和引入格式是否正确2. 检查资源是否包含在程序集中 1. 检查资源路径和引入格式是否正确 正确的格式&#xff0c;注意字体文件 “xxxx.ttf” 应写为 “#xxxx” <TextBlock Text"&#xe7ae;…

不重启Docker能添加自签SSL证书镜像仓库吗?

应用背景 在企业应用Docker规划初期配置非安全镜像仓库时&#xff0c;有时会遗漏一些仓库没配置&#xff0c;但此时应用程序已经在Docker平台上部署起来了&#xff0c;体量越大就越不会让人去直接重启Docker。 那么&#xff0c;不重启Docker能添加自签SSL证书镜像仓库吗&…

经典人体模型SMPL介绍(一)

SMPL是马普所提出的经典人体模型&#xff0c;目前已成为姿态估计、人体重建等领域必不可少的基础先验。SMPL基于蒙皮和BlendShape实现&#xff0c;从数千个三维人体扫描结果得来&#xff0c;后通过PCA统计学习得来。 论文&#xff1a;SMPL: A Skinned Multi-Person Linear Mode…

Python读取svn版本

本文将详细介绍如何使用Python读取svn版本。 一、安装svn库 首先&#xff0c;我们需要使用Python来连接svn服务器&#xff0c;并获取版本号。这里我们使用pysvn库来完成这个工作。 pip install pysvn需要注意的是&#xff0c;如果你需要安装特定版本的pysvn&#xff0c;你可…

2023连锁收银系统该如何选?值得推荐的5款连锁收银系统

现在不管是连锁店还是零售店&#xff0c;只要是开店做生意赚钱的&#xff0c;都少不了要和钱打交道&#xff0c;尤其是对连锁店来说&#xff0c;收银工作更是重中之重。 连锁店涉及的门店较多&#xff0c;必须要有一套足够优秀的连锁收银系统&#xff0c;才能做好每个门店的收银…

【ARM 嵌入式 编译系列 5 -- GCC 内建函数 __builtin 详细介绍】

文章目录 什么是GCC内建函数?GCC 常见内建函数GCC内建函数使用示例上篇文章:ARM 嵌入式 编译系列 4.2 – GCC 链接规范 extern “C“ 介绍 下篇文章:ARM 嵌入式 编译系列 6 – GCC objcopy, objdump, readelf, nm 介绍 什么是GCC内建函数? GCC提供了一些专门的功能,用于…

使用 `tailwindcss-patch@2` 来提取你的类名吧

使用 tailwindcss-patch2 来提取你的类名吧 使用 tailwindcss-patch2 来提取你的类名吧 安装使用方式 命令行 Cli 开始提取吧 Nodejs API 的方式来使用 配置 初始化 What’s next? tailwindcss-patch 是一个 tailwindcss 生态的扩展项目。也是 tailwindcss-mangle 项目重要…

redis的Key的过期策略是如何实现的?

Key的过期策略 一个redis中可能同时存在很多很多key&#xff0c;这些key可能有很大一部分都有过期时间&#xff0c;此时&#xff0c;redis服务器咋知道哪些key已经过期要被删除&#xff0c;哪些key还没有过期&#xff1f; 如果直接遍历所有的key&#xff0c;显然是行不通的&am…

Abandon_Ubuntu Declaration

鉴于以下几个原因&#xff0c;持续到明年考研结束&#xff0c;我将不再捣鼓ubuntu和任何linux系统&#xff0c; 原因如下&#xff1a; ubuntu23.04不支持wps编辑pdf这个核心功能&#xff0c;且开机向canonial公司发送远程遥测&#xff0c;暂时不会用iptables禁用&#xff0c;故…

第几天(day)

庐阳区2021年信息学竞赛试题 题目描述 Description 给定一个日期&#xff0c;求这一天是当年的第几天。每年的元旦&#xff0c;1月1日&#xff0c;都是每年的第一天&#xff0c;但是每年的最后一天&#xff0c;12月31日&#xff0c;有可能是第365天&#xff0c;也有可能是第3…

2023年上半年网络工程师上午真题及答案解析

1.固态硬盘的存储介质是( )。 A.光盘 B.闪存 C.软盘 D.磁盘 2.虚拟存储技术把( )有机地结合起来使用&#xff0c;从而得到一个更大容量的“内存”。 A.内存与外存 B.Cache与内存 C.寄存器与Cache D.Cache与外存 3.下列接口协议中&…

关于安卓高版本gradle(7.0+)引入aar包报错问题

背景 项目开发过程中&#xff0c;接入三方sdk&#xff0c;引入了本地aar包依赖&#xff0c;as rebuild项目的过程中&#xff0c;报错&#xff0c;提示依赖找不到问题。 报错&#xff1a;“bundleDebugAar FAILED”等 开发环境 win10 jdk11 gradle 7.5 原因 由于gradle的版…

找不到msvcp140.dll无法继续执行代码怎么解决?分享三个解决方法

当你在运行某个程序或游戏时遇到msvcp140.dll缺失的错误提示&#xff0c;你可能会感到困惑和烦恼。在修复msvcp140.dll的过程中&#xff0c;我遇到了一些挑战&#xff0c;但最终成功解决了这个问题。以下是我总结的三个解决方法&#xff0c;希望能帮助你解决这个问题。 找不到m…

Mongodb (四十一)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、概述 1.1 相关概念 1.2 特性 二、应用场景 三、安装 四、目录结构 五、默认数据库 六、 数据库操作 6.1 库操作 6.2 文档操作 七、MongoDB数据库备份 7.1 备…

【golang】类型推断和变量重声明

类型推断是一种编程语言在编译期自动解释表达式类型的能力。 1.Go语言的类型推断可以带来哪些好处&#xff1f; 在写代码时&#xff0c;我们通过使用Go语言的类型推断会节省敲击次数&#xff0c;而节省下来的键盘敲击次数几乎可以忽略不记。但它真正的好处&#xff0c;往往会…