当前位置: 首页 > news >正文

【Python爬虫教程】第7篇-requests模块的cookies保存和使用

文章目录

    • 为什么要保存cookies
    • requests.utils工具类
    • 保存cookies到本地文件
    • 从本地文件解析cookies
    • 使用
    • 使用实践

为什么要保存cookies

保存cookies是避免每次都登录获取权限,一遍权限是有过期时间的,不需要每次重复登录,可以将cookies保存起来,用的时候再加载。适用于多机器并发式爬取数据或者抢票等功能。
在这里插入图片描述

requests.utils工具类

需要使用request.utils工具类进行解析cookie,从CookieJar转为字典,从字典转为CookieJar,需要特殊的操作。

# 将CookieJar转为字典:
cookie_dict= requests.utils.dict_from_cookiejar(r.cookies)# 将字典转为CookieJar:
cookies = requests.utils.cookiejar_from_dict(cookie_dict, cookiejar=None, overwrite=True)

保存cookies到本地文件

def save_cookie():# 登录成功, session里的cookie是最全的,response返回的cookie不全cookiejar = requests.utils.dict_from_cookiejar(request_session.cookies)with open(cookie_path, "w") as f:json.dump(cookiejar, f, indent=True)

比如下面这个网站cookie的保存内容:
在这里插入图片描述

从本地文件解析cookies

def __load_cookie():'''加载本地cookie,如果存在加载,如果不存在就返回空:param session::return:'''try:with open(cookie_path, "r") as f:load_cookie = json.load(f)return requests.utils.cookiejar_from_dict(load_cookie)except Exception as e:traceback.print_exc()return None

使用

将从本地解析出来的cookies同步到session中

request_session = requests.Session()
exist_cookies= requests.utils.cookiejar_from_dict(load_cookie)
request_session.cookies.update(exist_cookies)

使用实践

下面这个例子使用session方式请求,登录成功之后会调用save()保存cookie,每次重新启动程序会先加载cookies

import json
import tracebackimport requests.utilsfrom executor.page_executor import PageExecutor
from file_path import get_absolute_pathcookie_path = get_absolute_path('data/cookie.txt')
request_session: requests.Session = Nonedef __load_cookie():'''加载本地cookie,如果存在加载,如果不存在就返回空:param session::return:'''try:with open(cookie_path, "r") as f:load_cookie = json.load(f)return requests.utils.cookiejar_from_dict(load_cookie)except Exception as e:traceback.print_exc()return Nonedef get_session():global request_sessionif request_session is not None:return request_sessionelse:request_session = requests.Session()exist_cookies = __load_cookie()if exist_cookies is not None:request_session.cookies.update(exist_cookies)return request_sessiondef save_cookie():# 登录成功, session里的cookie是最全的,response返回的cookie不全cookiejar = requests.utils.dict_from_cookiejar(request_session.cookies)with open(cookie_path, "w") as f:json.dump(cookiejar, f, indent=True)logger.info('cookies saved to ./data/cookie.txt')

相关文章:

【Python爬虫教程】第7篇-requests模块的cookies保存和使用

文章目录 为什么要保存cookiesrequests.utils工具类保存cookies到本地文件从本地文件解析cookies使用使用实践 为什么要保存cookies 保存cookies是避免每次都登录获取权限,一遍权限是有过期时间的,不需要每次重复登录,可以将cookies保存起来…...

微信小程序开发基础知识6----使用npm包

一、小程序对npm的支持与限制 目前,小程序中已经支持使用 npm 安装第三方包,从而来提高小程序的开发效率。但是,在小程序中使用npm 包有如下3个限制: ① 不支持依赖于 Node.js 内置库的包 ② 不支持依赖于浏览器内置对象的包 ③ 不支持依赖于…...

如何在element中table的 v-for中 使用slot-scope?

有时候我们需要通过数据库来动态控制表格的列,这样做的好处就是系统中如果有太多的表格项的话,直接这套代码就能通用了,其他的数据库里控制就行,不要太方便了,特别是一些ERP或者供应链的表格,动不动就是几十上百个字段,这时候不要太轻松了,废话不多说,直接上代码: &…...

企业网络实验dhcp-snooping、ip source check,防非法dhcp服务器、自动获取ip(虚拟机充当DHCP服务器)、禁手动修改IP

文章目录 需求相关配置互通性配置配置vmware虚拟机(dhcp)分配IP服务配置dhcp relay(dhcp中继)配置dhcp-snooping(防非法dhcp服务器)配置ip source check(禁手动修改IP)DHCP中继&…...

20. Python读取.mat格式文件通用函数

1. 前言 在科研和工程领域,MATLAB的.mat文件是一种常见的数据存储格式,用于保存复杂的数组和结构体。Python作为一种强大的编程语言,提供了多种库来读取和处理.mat文件。本文将介绍一个通用的Python函数,用于读取.mat格式文件,并将其内容转换为Python数据结构,以便进一步…...

Cypress UI自动化之安装环境

注:macOS系统 一、git环境 略 二、node环境 1、安装nvm 前提:有装过Homebrew,参考adb使用方法文档 1、安装nvm:首先要保证之前没有安装过node,如果之前安装过,先 brew uninstall node brew install n…...

SpringApplication.java类

Tips: 以下内容根据源码中的注解翻译 SpringApplication SpringApplication可用来从一个Java main方法引导和启动一个Spring应用。默认情况下,SpringApplication按照以下步骤引导你的应用: 创建一个合适的ApplicationContext(依赖于你的cl…...

智能招聘系统的AI功能解析

一、引言 随着科技的飞速发展,人工智能(AI)技术正逐步渗透到各个领域,为企业带来前所未有的变革。在人力资源管理领域,智能招聘系统的出现,不仅大大提高了招聘效率,还为企业带来了更精准、更科…...

AV1技术学习:Translational Motion Compensation

编码块根据运动矢量在参考帧中找到相应的预测块,如下图所示,当前块的左上角的位置为(x0, y0),在参考帧中找到同样位置(x0, y0)的块,根据运动矢量移动到目标参考块(左上角位置为:(x1, y1))。 AV1…...

mysql中的存储过程

存储过程的作用:有助于提高应用程序的性能。存储过程可以不必发送多个冗长的SQL语句 废话不说多,直接实操 ##实现num的相加 delimiter $$ CREATE PROCEDURE test1 () begindeclare num int default 0; -- 声明变量,赋默认值为0select num20;end $$ delimiter ; …...

07:串口通信二

串口编程 1、与波特率之相关的寄存器2、PCON寄存器3、SCON寄存器4、配置的代码分析5、向PC发送一段字符串6、PC机向单片机发送字符控制LED1灯的亮灭 1、与波特率之相关的寄存器 如图,与串口通信相关的寄存器主要是SCON和PCON寄存器。 2、PCON寄存器 SMOD&#xff1…...

识别视频中的人数并统计出来

目的: 使用Python和pysimpleguil以及opencv写一个统计人流量的软件。要求:1 加载选定的视频 2 通过形态学特征识别人,3统计人数并且在界面上显示出来,4 保存识别出人数的信息。 步骤 1: 安装必要的库 首先,确保你已经安装了Python。然后,安装PySimpleGUI和OpenCV。你可…...

【TypeDB 】机器学习和符号 AI 在机器人技术中的作用

机器学习和符号 AI 在机器人技术中的作用 煤油灯科技2022-06-29 14:23前言 机器人学是计算机科学中的一个多学科领域,致力于机器人的设计和制造,机器人在制造、太空探索和国防等行业都有应用。虽然该领域已经存在了 50 多年,但随着科幻小说成为现实,波士顿动力公司的Spot和…...

EPLAN 去掉PDF中的红色跳转标识

EPLAN PDF图纸导出后体验跳转标识会有红色标识,如何去掉呢?下面介绍一下方法: 此为现象: EPLAN 2.9的帮助文档里提示: 在导出的 PDF 文档中,跳转后的跳转目标现在通过红色的闪烁框进行标识。可能的跳转目…...

【car】深入浅出学习机械燃油车知识、结构、原理、维修、保养、改装、编程

汽车的五大总成通常是指发动机、变速器、前后桥、车架和悬挂系统。 发动机:是汽车的动力来源,负责将燃料的化学能转化为机械能,驱动汽车行驶。常见的发动机类型有内燃机(如汽油发动机、柴油发动机)和电动机&#xff0…...

语音识别概述

语音识别概述 一.什么是语音? 语音是语言的声学表现形式,是人类自然的交流工具。 图片来源:https://www.shenlanxueyuan.com/course/381 二.语音识别的定义 语音识别(Automatic Speech Recognition, ASR 或 Speech to Text, ST…...

勒索防御第一关 亚信安全AE防毒墙全面升级 勒索检出率提升150%

亚信安全信舷AE高性能防毒墙完成能力升级,全面完善勒索边界“全生命周期”防御体系,筑造边界勒索防御第一关! 勒索之殇,银狐当先 当前勒索病毒卷携着AI技术,融合“数字化”的运营模式,形成了肆虐全球的网…...

elementui 日历组件el-calendar使用总结

功能: 1.日历可以周视图、月视图切换; 2.点击月视图中日期可以切换到对应周视图; 3.点击周视图查看当日对应数据; 4.周、月视图状态下,点击前后按钮,分别切换对应上下的周、月; 5.点击回到…...

RK3568 安卓12 EC20模块NOCONN没有ip的问题(已解决)

从网上东拼西凑找了不少教程,但是里面没有提到rillib.so需要替换,替换掉就可以上网了,系统也有4G图标了。 注意,这个rillib.so是移远提供的。把他们提供的文件放到rk3568_android_sdk/vendor/rockchip/common/phone/lib下&#x…...

【NLP自然语言处理】基于BERT实现文本情感分类

Bert概述 BERT(Bidirectional Encoder Representations from Transformers)是一种深度学习模型,用于自然语言处理(NLP)任务。BERT的核心是由一种强大的神经网络架构——Transformer驱动的。这种架构包含了一种称为自注…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...

【网络安全】开源系统getshell漏洞挖掘

审计过程&#xff1a; 在入口文件admin/index.php中&#xff1a; 用户可以通过m,c,a等参数控制加载的文件和方法&#xff0c;在app/system/entrance.php中存在重点代码&#xff1a; 当M_TYPE system并且M_MODULE include时&#xff0c;会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

NPOI Excel用OLE对象的形式插入文件附件以及插入图片

static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...