Selenium配合Cookies实现网页免登录
文章目录
- 前言
- 1 方案一:使用Chrome用户数据目录
- 2 方案二:手动获取并保存Cookies,后续使用保存的Cookies
- 3 注意事项
前言
-
在进行使用Selenium进行爬虫、网页自动化操作时,登录往往是一个必须解决的问题,但是Selenium每次打开的浏览器默认是不携带用户数据的,所以每次都需要手动登录。本文将详细介绍如何使用Selenium配合Cookies实现网页的自动登录功能,以链家网站为例进行讲解。
-
实现思路
- 使用本地保存的Chrome用户数据目录
- 先手动登录一次获取并保存Cookies,后续使用保存的Cookies
1 方案一:使用Chrome用户数据目录
-
思想:这种方案的核心是直接使用本地Chrome浏览器的用户数据,包括已保存的登录状态和Cookie信息。
-
代码实现(代码执行之前先保证手动正常打开网站时,网站是登陆了的,不然使用的用户数据也是没有登陆的,没有用)
from selenium import webdriver
from selenium.webdriver.chrome.service import Servicedriver_path = "E:\\ProgramFiles\\_CodeTools\\ChromeDriver\\chromedriver.exe"
service = Service(driver_path)options = webdriver.ChromeOptions()
# 设置用户数据目录
options.add_argument("--user-data-dir=C:/Users/L/AppData/Local/Google/Chrome/User Data")
# 禁用自动化提示
options.add_experimental_option("useAutomationExtension", False)
options.add_experimental_option("excludeSwitches", ["enable-automation"])browser = webdriver.Chrome(service=service, options=options)
browser.get("https://bj.lianjia.com/ershoufang/")# 后续操作
# ...
- 核心代码:
options.add_argument("--user-data-dir=C:/Users/L/AppData/Local/Google/Chrome/User Data")
该代码的作用是设置Chrome浏览器的用户数据目录(C:/Users/L/AppData/Local/Google/Chrome/User Data),使得Selenium可以直接使用本地Chrome浏览器的用户数据,包括已保存的登录状态和Cookie信息。不过应注意用户数据目录随操作系统、用户名等不同而不同,需要根据实际情况进行调整。
-
不同操作系统的数据目录如下:
- Windows:
C:/Users/用户名/AppData/Local/Google/Chrome/User Data - macOS:
~/Library/Application Support/Google/Chrome/Profile 1 - Linux:
~/.config/google-chrome/Default
- Windows:
-
优点
- 实现简单,不需要手动处理Cookie,代码量少
- 可以直接使用本地浏览器的所有配置
-
缺点
- 依赖本地Chrome浏览器配置
- 可能存在跨设备兼容性问题
- 需要指定正确的用户数据目录路径
2 方案二:手动获取并保存Cookies,后续使用保存的Cookies
-
思想:这种方案的核心是先通过手动登录获取网站的Cookies信息,将其保存到本地文件,后续使用时直接读取并应用这些Cookies来实现自动登录。
-
代码实现(第一步:获取Cookies)
import json
from selenium import webdriver
from selenium.webdriver.chrome.service import Servicedriver_path = "E:\\ProgramFiles\\_CodeTools\\ChromeDriver\\chromedriver.exe"
service = Service(driver_path)options = webdriver.ChromeOptions()
options.add_experimental_option("useAutomationExtension", False)
options.add_experimental_option("excludeSwitches", ["enable-automation"])browser = webdriver.Chrome(service=service, options=options)
browser.get("https://bj.lianjia.com/ershoufang/")# 等待手动登录
input("请登录后按回车继续...")# 获取cookie并保存
cookies = browser.get_cookies()
with open("cookies.json", "w") as f:json.dump(cookies, f, indent=4)# 关闭浏览器
browser.quit()
这一步在浏览器打开后网页是没有登录的,需要我们手动按照网页要求进行登录,登录完成后命令行回车,程序获取Cookies后保存到本地文件,结束程序。
- 代码实现(第二步:使用Cookies实现免登录)
import json
from selenium import webdriver
from selenium.webdriver.chrome.service import Servicedriver_path = "E:\\ProgramFiles\\_CodeTools\\ChromeDriver\\chromedriver.exe"
service = Service(driver_path)options = webdriver.ChromeOptions()
options.add_experimental_option("useAutomationExtension", False)
options.add_experimental_option("excludeSwitches", ["enable-automation"])browser = webdriver.Chrome(service=service, options=options)
browser.get("https://bj.lianjia.com/ershoufang/")# 读取并添加cookie
with open("cookies.json", "r") as f:cookies = json.load(f)
for cookie in cookies:browser.add_cookie(cookie)# 刷新页面,完成登录
browser.refresh()# 后续操作
# ...
这一步代码是读取保存的Cookies,并将其添加到浏览器中,完成自动登录。
- 核心代码:
# 步骤一:获取并保存Cookies
cookies = browser.get_cookies()
with open("cookies.json", "w") as f:json.dump(cookies, f, indent=4)# 步骤二:读取并使用Cookies
with open("cookies.json", "r") as f:cookies = json.load(f)
for cookie in cookies:browser.add_cookie(cookie)
这段代码展示了Cookies的获取、保存和使用过程。需要注意的是,Cookies通常都有有效期,过期后需要重新获取。
- 优点
- 可跨设备使用,便于部署
- Cookie可以保存和复用
- 实现更灵活,可以针对不同网站保存不同的Cookie
- 缺点
- 需要先手动登录获取Cookie
- Cookie可能会过期,需要定期更新
- 实现步骤相对较麻烦
3 注意事项
- ChromeDriver版本要与Chrome浏览器版本匹配
- Cookie有效期有限,需要定期更新
- 不同网站的Cookie获取方式可能不同
- 注意Cookie的安全存储,避免泄露
- 建议添加异常处理机制
相关文章:
Selenium配合Cookies实现网页免登录
文章目录 前言1 方案一:使用Chrome用户数据目录2 方案二:手动获取并保存Cookies,后续使用保存的Cookies3 注意事项 前言 在进行使用Selenium进行爬虫、网页自动化操作时,登录往往是一个必须解决的问题,但是Selenium每次…...
DeepSeek R1模型解读与使用
字节在春节前发布了doubao-1.5,它的官方介绍竟然是这样的: 这次发布了四个型号,doubao-1.5-pro-32k, doubao-1.5-pro-256k, doubao-1.5-lite-32k, doubao-1.5-vision-pro-32k,价格全部与上一个版本doubao模型一致,加量…...
Windows电脑不小心点击了关机,关机过程中如何阻止
如果电脑正在关机的过程中,想要阻止关机,可以尝试以下方法: 如果关机过程较慢,可以按下键盘组合键 Win R 打开运行窗口。输入 shutdown -a 后按回车键,这将中断关机操作(适用于 Windows 系统)…...
CNN-GRU卷积门控循环单元时间序列预测(Matlab完整源码和数据)
CNN-GRU卷积门控循环单元时间序列预测(Matlab完整源码和数据) 目录 CNN-GRU卷积门控循环单元时间序列预测(Matlab完整源码和数据)预测效果基本介绍CNN-GRU卷积门控循环单元时间序列预测一、引言1.1、研究背景与意义1.2、研究现状1…...
【吉林乡镇界】面图层shp格式arcgis数据乡镇名称和编码wgs84无偏移内容测评
标题中的“吉林省乡镇界面图层shp格式arcgis数据乡镇名称和编码wgs84无偏移”揭示了这是一个地理信息系统(GIS)相关的数据集,主要用于描绘吉林省的乡镇边界。这个数据集包含了一系列的文件,它们是ArcGIS软件能够识别和处理的Shape…...
fpga学习入门 串口rs232回环
奇偶检验位这里是省略了 做好回环后可以使用上位机做回环测试,top文件写的方式就是将rx(fpga端)接受到的模块(pc端)tx发送出去,这两个端口用杜邦线连接,同理模块的rx连接fpga的tx,…...
智启未来,AI筑梦科技新星”------华清远见成都中心2025冬令营圆满结束
2025年1月11日-16日,华清远见成都中心为期6天的“智启未来,AI筑梦科技新星”2025冬令营活动圆满结束。此次活动吸引了众多对人工智能和无人驾驶技术充满热情的学生参与,共同开启了一段点燃科技梦想的精彩旅程。 报道接待 以AI无人驾驶小车为核…...
接上篇基于Alertmanager 配置钉钉告警
Alertmanager 是一个用于处理和管理 Prometheus 警报的开源工具。它负责接收来自 Prometheus 服务器的警报,进行去重、分组、静默、抑制等操作,并通过电子邮件、PagerDuty、Slack 等多种渠道发送通知。 主要功能 去重:合并相同或相似的警报&a…...
DDD - 如何设计支持快速交付的DDD技术中台
文章目录 Pre概述打造快速交付团队烟囱式的开发团队(BAD)大前端技术中台(GOOD) 技术中台的特征简单易用的技术中台建设总结 Pre DDD - 软件退化原因及案例分析 DDD - 如何运用 DDD 进行软件设计 DDD - 如何运用 DDD 进行数据库设计 DDD - 服务、实体与值对象的两种设计思路…...
JAVA与数据结构-线性表
目录 一.线性表的概念 二.线性表的关系及分类 三.数组与顺序表 四.链表 1.静态链表(链表的的数组底层实现) 2.循环链表 3.双向链表 五.栈 1.栈的概念 2.栈的底层实现 3.共享空间栈 4.逆波兰表达式(后缀表达式) 5.栈与递归 六.…...
C++|开源日志库log4cpp和glog
文章目录 log4cpp 和 glog对比1. **功能对比**2. **易用性和配置**3. **性能**4. **线程安全**5. **日志输出**6. **功能扩展**7. **适用场景**8. **总结** 其它开源C日志库1. **spdlog**2. **easylogging**3. **Boost.Log**4. **loguru**5. **Poco Logging**6. **Qt Logging (…...
React Context 实现全局组件注册
来源于GPT4o:https://ai.openaicloud.cn/?inVitecodeEJSTWFZMQE 第一步:创建全局组件上下文 (GlobalComponentProvider) 我们将创建一个 React Context 和 Provider,用于存储和提供全局组件。 // src/context/GlobalComponentProvider.tsx…...
基于AutoDL云计算平台+LLaMA-Factory训练平台微调本地大模型
1. 注册与认证 访问AutoDL官网:前往 AutoDL官网。 注册账号:完成注册流程。 实名认证:按照要求完成实名认证,以确保账号的合规性。 2. 选择GPU资源 进入算力市场:在官网首页点击“算力市场”菜单。 挑选GPU&#x…...
strdup 函数
strdup 函数是 C 标准库中的一个函数,用于复制一个字符串。它的全称是 "string duplicate"。这个函数在 <string.h> 头文件中声明。strdup 函数会分配足够的内存来存储源字符串的副本,并将源字符串的内容复制到新分配的内存中。然后返回…...
2.9/Q2,Charls最新文章解读!
文章题目:The causal effect of Internet use on rural middle-aged and older adults depression: A propensity score matching analysis DOI:10.1177/20552076241310041 中文标题:互联网使用对农村中老年人抑郁症的因果影响:…...
【未完成】springboot项目实现扫码登录相关逻辑
准备工作 配置redis 引入redis依赖 <dependencies><!-- Spring Data Redis 依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><…...
html、js、css实现爱心效果
好的!我们可以进一步美化这个爱心效果,增加更多动态和视觉吸引力。以下是改进后的代码,包括以下功能: 1. 背景渐变:添加动态背景渐变效果。 2. 爱心阴影:为爱心添加阴影,使其更具立体感。 3. 随…...
【前端】Hexo 建站指南
文章目录 前言生成站点本地测试部署云端参考 前言 更好的阅读体验:https://blog.dwj601.cn/FrontEnd/Hexo/build-your-own-website-with-hexo/ 笔记记多了,想要分享给同学们一起交流进步,该怎么办?想要搭建一个属于自己的知识库…...
OpenStack基础架构
openstack是一套IaaS云的解决方案,是一个开源的云计算管理平台 每一台物理机上都会有一个nova服务器 虚拟化其实是在nova主机里启用的 COW技术: 这么来看,3个物理机上产生10个虚拟机,所以把服务分散到10个虚拟机上和分散到4个虚拟…...
1905电影网中国地区电影数据分析(一) - 数据采集、清洗与存储
文章目录 前言一、数据采集步骤及python库使用版本1. python库使用版本2. 数据采集步骤 二、数据采集网页分析1. 分析采集的字段和URL1.1 分析要爬取的数据字段1.2 分析每部电影的URL1.2 分析每页的URL 2. 字段元素标签定位 三、数据采集代码实现1. 爬取1905电影网分类信息2. 爬…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...
