【Python爬虫教程】第6篇-使用session发起请求
为什么要使用session
前面介绍了如何使用reqesuts发起请求,今天介绍如何使用session发起请求。session简单理解就是一种会话机制,在浏览器中我们登录完之后,后面再请求服务数据都不需要再登录了,以为Cookie里已经保存了你的会话状态,每次请求会自动携带cookie参数,如果使用reqeusts.request就必须每次手动携带cookie参数。而reqeuest.Session()会话对象让你能够跨请求保持某些参数。它也会在同一个 Session 实例发出的所有请求之间保持 cookie, 就不需要再手动每次处理cookie状态了。
参考文档:
官方文档
如何使用
session使用方式其实和reqeust方法差不都,也支持session.get(), session.post(), session.request()等方法。
s = requests.Session()s.get('https://httpbin.org/cookies/set/sessioncookie/123456789')
r = s.get('https://httpbin.org/cookies')print(r.text)
# '{"cookies": {"sessioncookie": "123456789"}}'
最佳实践 cookie复用
处理一些网站时需要的登录校验权限,可以通过session的方式请求,可以把登录后获取到的cookie保存起来,这样后面每次需要登录的时候,可以直接使用已经保存好的cookie,使用这个cookie去构造一个session,然后再发起请求,这样可以避免重复登录。适用于多机器并发式爬取数据。
cookie复用实践:
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')def update_cookie():'''为什么需要一个新的session# 走到这一步,说明session已经过期,重新获取session,需要重新处理下session# 1. 但是因为携带有旧的session,导致携带旧的__RequestVerificationToken和新的__RequestVerificationToken一起请求,登录失败# 2. 所以需要重新处理下session,主要是处理__RequestVerificationToken:return:'''error_cookie_jar = requests.utils.dict_from_cookiejar(request_session.cookies)new_cookie_jar = {'__RequestVerificationToken': error_cookie_jar['__RequestVerificationToken']}new_cookie = requests.utils.cookiejar_from_dict(new_cookie_jar)# 清空旧的cookierequest_session.cookies.clear_session_cookies()# 填充新的cookierequest_session.cookies.update(new_cookie)
相关文章:
【Python爬虫教程】第6篇-使用session发起请求
为什么要使用session 前面介绍了如何使用reqesuts发起请求,今天介绍如何使用session发起请求。session简单理解就是一种会话机制,在浏览器中我们登录完之后,后面再请求服务数据都不需要再登录了,以为Cookie里已经保存了你的会话状…...
【Hot100】LeetCode—763. 划分字母区间
目录 题目1- 思路2- 实现⭐763. 划分字母区间——题解思路 3- ACM 实现 题目 原题连接:763. 划分字母区间 1- 思路 思路 目标:同样的字母 字符串尽可能的长 问1:怎么确定字母数 ——> 哈希表问2:怎么让字符尽可能的长&#…...
分布式服务基于Zookeeper的分布式锁的实现
一、序言 ZooKeeper 的分布式锁机制是一种协调多个客户端访问共享资源的方法。通过使用 ZooKeeper 的持久化节点和临时顺序节点,可以实现高效且可靠的分布式锁。下面是分布式锁的工作原理以及如何使用它的具体步骤。 二、Zookeeper分布式锁的核心原理 创建锁目录节…...
Rust编程-I/O
文件读取: 依赖:标准库中use std::fs; 模块 读取文件:fs::read_to_string(filepath:string) -> Result<String> String是文件内容 下面代码来自《Rust权威指南》,主要作用是从文件中检索,并返回检索内容所在的行…...
FastAPI 学习之路(四十七)WebSockets(三)登录后才可以聊天
之前我们是通过前端自动生成的token信息,这次我们通过注册登录,保存到本地去实现。首先,我们实现一个登录页面,放在templates目录下。 <!DOCTYPE html> <html lang"en"> <head><meta charset&quo…...
数据结构—链式二叉树-C语言
代码位置:test-c-2024: 对C语言习题代码的练习 (gitee.com) 一、前言: 在现实中搜索二叉树为常用的二叉树之一,今天我们就要通过链表来实现搜索二叉树。实现的操作有:建二叉树、前序遍历、中序遍历、后序遍历、求树的节点个数、求…...
nginx代理gitee
背景 若干台agv设备,这些设备都是没有公网的(无法访问百度等)。 一台服务器(ubuntu20.04)有线可以公网,无线可以实现内部通信(agv,plc等设备)。 目的 agv每一次更新代码,拉取代码等都需要切换到有公网的网络,多台agv设…...
一款IM即时通讯聊天系统源码,包含app和后台源码
一款IM即时通讯聊天系统源码 聊天APP 附APP,后端是基于spring boot开发的。 这是一款独立服务器部署的即时通讯解决方案,可以帮助你快速拥有一套自己的移动社交、 企业办公、多功能业务产品。可以 独立部署!加密通道!牢牢掌握通…...
Camunda如何通过外部任务与其他系统自动交互
文章目录 简介流程图外部系统pom.xmllogback.xml监听类 启动流程实例常见问题Public Key Retrieval is not allowed的解决方法java.lang.reflect.InaccessibleObjectException 流程图xml 简介 前面我们已经介绍了Camunda的基本操作、任务、表: Camunda组件与服务与…...
Django ORM中ExpressionWrapper的用途
ExpressionWrapper 在 Django ORM 中,直接在 filter 方法中进行字段间的比较时,不能直接使用算术运算符(如 、-、*、/)来操作 F 对象,需要使用 ExpressionWrapper 来包装表达式并指定输出字段类型。 使用Q对象&#…...
什么软件修复视频画质比较好,视频画质修复工具
有些视频中可能会出现噪点、残影、颜色失真等问题,导致观看时体验感不太好,修复视频画质可以去除这些问题,使视频更加干净、清晰和真实。 高质量的视频画质能够提高观众的观看体验,让观众更加享受观看视频的过程。特别是在需要展示…...
效能工具:执行 npm start 可直接切换proxy代理UR后直接启动项目
1) 背景: 我们项目是2个前端3个后端的配置。前端和每个后端都有需要调试的接口。 因此经常切换vite.congig.js中的proxy后端代理链接,是挺麻烦的。 于是我研究如何能快速切换后端URL,所幸懒人有懒福,我找到了Inquirer 和 fs, 实…...
MongoDB自学笔记(一)
一、MongoDB简介 MongoDB是一款基于C开发的文档型数据库。与传统的关系型数据库有所不同,MongoDB面向的是文档,所谓的文档是一种名为BSON (Binary JSON:二进制JSON格式)是非关系数据库当中功能最丰富,最像…...
【AIGC】二、mac本地采用GPU启动keras运算
mac本地采用GPU启动keras运算 一、问题背景二、技术背景三、实验验证本机配置安装PlaidML安装plaidml-keras配置默认显卡 运行采用 CPU运算的代码step1 先导入keras包,导入数据cifar10,这里可能涉及外网下载,有问题可以参考[keras使用基础问题…...
【Qt】使用临时对象的坑
前言 使用临时对象时,一定要注意临时对象析构后是否会对代码造成影响,下面是一些可能出现的错误 std::string Widget::getStr() {return "nihao"; }void Widget::on_pushButton_clicked() {std::string objStr getStr();const char* str g…...
Apache-Flink未授权访问高危漏洞修复
漏洞等级 高危漏洞!!! 一、漏洞描述 攻击者没有获取到登录权限或未授权的情况下,或者不需要输入密码,即可通过直接输入网站控制台主页面地址,或者不允许查看的链接便可进行访问,同时进行操作。 二、修复建议 根据业务/系统具体情况,结合如下建议做出具体选择: 配…...
Unable to obtain driver using Selenium Manager: Selenium Manager failed解决方案
大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...
(01)Unity使用在线AI大模型(使用百度千帆服务)
目录 一、概要 二、环境说明 三、申请百度千帆Key 四、使用千帆大模型 四、给大模型套壳 一、概要 在Unity中使用在线大模型分为两篇发布,此篇文档为在Python中使用千帆大模型,整体实现逻辑是:在Python中接入大模型—>发布为可传参的…...
Zed 编辑器发布了原生 Linux 版本
由 Rust 编写、GPU 加速的 Zed 文本编辑器终于提供了正式的 Linux 原生版本!在过去的几个月里,Zed 的 Linux 支持取得了长足的进步,现在已经进入了更正式的阶段。 今天,这款由前 Atom 开发人员创建的现代开源代码编辑器现在在 Li…...
安全入门day01
一、常用名词 1、前后端 (1)前端 前端主要负责用户界面的展示和交互。它通常包括HTML、CSS和JavaScript等技术的使用,也可能使用各种前端框架和库,如React、Vue.js、Angular等,来构建更加复杂和动态的用户界面。前端…...
学习笔记:敢管,会管,善管——学校行政管理的进阶
管理者角色理解一、管理者在组织结构中的位置校级:领导者管理者中层干部:管理者执行者学校教师:执行者(班主任对班级兼顾三者)二、从普通教师到中层干部的转变:1.工作职责的变化:从运动员向教练员转变运动员…...
dify可以干什么
Dify 是一个开源的大模型(LLM)应用开发平台,旨在帮助你快速构建、管理和部署生成式 AI 应用,而无需从零开始写代码。简单来说,你可以把它理解为一个可视化的 AI 应用“工作台”,通过拖拉拽的方式࿰…...
3步掌握OCAT:OpenCore配置效率提升300%的GUI管理方案
3步掌握OCAT:OpenCore配置效率提升300%的GUI管理方案 【免费下载链接】OCAuxiliaryTools Cross-platform GUI management tools for OpenCore(OCAT) 项目地址: https://gitcode.com/gh_mirrors/oc/OCAuxiliaryTools OCAuxiliaryTools&…...
高效批量获取抖音无水印视频:从概念到实战的完整指南
高效批量获取抖音无水印视频:从概念到实战的完整指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback suppor…...
2026年一体化HR系统TOP8盘点:从集团管控到AI落地的选型指南
进入2026年,企业选一体化HR系统不再只看模块是否齐全,更看能否支撑集团管控、复杂用工、数据洞察与AI提效闭环。红海云在国央企与复杂场景的深度适配、以及AI在招聘与员工服务等环节的可落地性上更突出;用友、北森、金蝶在业人融合、PaaS扩展…...
数学建模实战:用熵权法+PCA搞定你的综合评价问题(附Python完整代码与数据)
数学建模实战:用熵权法PCA搞定你的综合评价问题(附Python完整代码与数据) 在数学建模竞赛中,综合评价问题一直是让参赛者头疼的难题。如何从一堆看似杂乱无章的指标中,提炼出关键信息,给出客观公正的评价&a…...
得意黑Smiley Sans字体全平台部署与深度应用指南
得意黑Smiley Sans字体全平台部署与深度应用指南 【免费下载链接】smiley-sans 得意黑 Smiley Sans:一款在人文观感和几何特征中寻找平衡的中文黑体 项目地址: https://gitcode.com/gh_mirrors/smi/smiley-sans 1 价值定位:现代设计的字体革新选择…...
如何通过手机号快速找回QQ号?解锁Python工具的5个实用技巧
如何通过手机号快速找回QQ号?解锁Python工具的5个实用技巧 【免费下载链接】phone2qq 项目地址: https://gitcode.com/gh_mirrors/ph/phone2qq 忘记QQ号是许多用户都会遇到的困扰,尤其是在更换设备或长期未登录后。phone2qq作为一款开源的Python…...
资源嗅探革新性工具:猫抓让网页资源获取变得前所未有的简单
资源嗅探革新性工具:猫抓让网页资源获取变得前所未有的简单 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾经遇到过想要保存网…...
重构游戏串流体验:Sunshine如何突破设备与场景限制
重构游戏串流体验:Sunshine如何突破设备与场景限制 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 当你想在平板上玩3A游戏时,最大的障碍是什么?…...
