python康复日记-request库的使用,爬虫自动化测试

一,request的简单应用

#1请求地址
URL='https://example.com/login'
#2参数表单
form_data = {'username': 'admin','password': 'secret'
}
#3返回的响应对象response
response = requests.post(URL,data=form_data,timeout=5
)
#4处理返回结果,这里直接打印返回网页的正文。通常需要json转化,和encode编码下
print(reponse.content)

1,请求头需要设置,有些网站会限制访问

    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36','Referer': 'https://www.99csw.com/','Accept-Language': 'zh-CN,zh;q=0.9'}try:# 发送HTTP请求response = requests.get(url, headers=headers, timeout=15)

2,response的属性

发送request请求后,返回的reponse对象里有我们要的信息,需要处理。常用的3个标粗了。

属性/方法类型/返回类型说明
status_codeintHTTP 状态码(如 200、404、500)
headersCaseInsensitiveDict响应头字典(不区分大小写)
textstr解码后的文本内容(自动根据 encoding 解码)
contentbytes原始字节内容(未解码的二进制数据)
json()dict/list解析 JSON 响应内容(非 JSON 内容会抛异常)
urlstr最终请求的 URL(含重定向后的地址)
encodingstr响应内容的编码格式(可手动修改)
apparent_encodingstr通过内容分析出的编码格式(自动检测)
rawHTTPResponse原始响应流对象(需配合 stream=True 使用)
cookiesRequestsCookieJar服务器返回的 Cookies
elapseddatetime.timedelta请求耗时(从发送到响应完成的时间)
historylist[Response]重定向历史记录列表
reasonstr状态码的文本描述(如 200 → "OK",404 → "Not Found")
requestPreparedRequest关联的请求对象(含请求头、方法、URL 等信息)

rep = reponse.content.decode('utf8'),content获取的正文是二进制,注意编码。

正文处理通常需要 json格式化 和 re正则模块 的匹配。

#对返回content正文中,span标签的获取,标题内容获取
pattern1 = re.compile(r'<span class="title">([^&]*?)</span>')
titles = pattern1.findall(resp.text)

3,session会话保持,处理cookie,保持会话。

Session 对象存储特定用户会话所需的属性及配置信息。可以带上cookie含帐号密码。

成功登陆之后,直接获取返回响应的cookie

def login():login_url = 'http://www.xxx.com/login'headers = {"Accept": "application/json, text/javascript, */*; q=0.01"}body = {"usercode": "liuzz05@****.com","password": "123456"}try:res = requests.post(url=login_url, headers=headers, data=body)cookies = res.cookiescookie = requests.utils.dict_from_cookiejar(cookies)return cookieexcept Exception as err:print('获取cookie失败:\n{0}'.format(err))

如果没有,先登录,从浏览器工具栏取cookie,找信息。

F12检查请求。cookie里有大串字母,password,token等字样说明这个可能是带密码账号的cookie,要具体情况定。

直接使用cookie,或者把cookie放在header参数中,依据具体网站请求头格式而定

把cookie转化为字典格式,手动扣cookie的键值对。本地文件写入分析,拼接

def get_data():cookie = login()res = requests.get(url=get_data_url, cookies=cookie)print(res.text)

def get_data():cookie = login()headers = {"cookie": cookie}res = requests.get(url=get_data_url, headers=headers)print(res.text)

一个完整的登录案例。

def auto_login():s = requests.Session()r = s.get(login_url)bs = BeautifulSoup(r.text,'html.parser')image = bs.find("img", {"id": "vcJpeg"})['src']lt_data = bs.find("input", {"name": "lt"})['value']csr_data = bs.find("input", {"name": "csrftoken"})['value']sec_data = bs.find("input", {"name": "sec"})['value']#print(lt_data,",",csr_data,",",sec_data)rootdir="http://172.16.5.12:10086"ir = s.get(rootdir+image)if ir.status_code == 200:with open('valid.jpg', 'wb') as f:f.write(ir.content);f.close();validateCode = get_code(Image.open('valid.jpg'))  # 通过本地图片解析验证码print(validateCode)postdata={'csrftoken': csr_data,'username': uosp_username,'password': base64.b64encode(uosp_passwd.encode('utf-8')),'institute': '00010000','validateCode': validateCode,'lt': lt_data,'sec': sec_data,'dn': '','ip': '144.4.44.44','_eventId':'submit',}print(postdata)form_data={"action":"GetINCInfoByID","id":"INC000287932",}s.post(login_url,data = postdata)s.post(incident_url,data = form_data)s.post(servicelogin_url)cookies_dict = requests.utils.dict_from_cookiejar(s.cookies)  # 登录后页面的cookie转化为dict#print("cookies is that ",cookies_dict)if ('.ASPXUSERDEMO' in  cookies_dict):  # 如果登录成功,cookie中会有.ASPXUSERDEMO字段值cookies = open('login_cookies', 'w')cookies.write(str(cookies_dict))  # 将cookie信息写入本地文件,其他模块直接访问文件可以绕过登录cookies.close()return selse:return None

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

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

相关文章

强化学习和智能决策:Q-Learning和Deep Q-Learning算法

强化学习(Reinforcement Learning, RL)是机器学习的一个重要分支,它通过智能体(Agent)与环境交互来学习最优决策策略,旨在最大化智能体的长期累积奖励。Q-Learning和Deep Q-Learning是强化学习中的两种关键算法,它们在智能决策领域发挥着重要作用。 一、强化学习基础 …

ubuntu22.04 安装Jitsi meet 开源会议系统,代替腾讯会议

0.安装 官方安装教程Self-Hosting Guide - Debian/Ubuntu server | Jitsi Meet 一定要用域名访问&#xff0c; 一定要用域名访问&#xff0c; 一定要用域名访问&#xff0c; 一定要用域名访问&#xff0c; 域名一定要有ssl证书&#xff0c;域名一定要有ssl证书&#xff0c;域名…

专家管理系统(源码+文档+讲解+演示)

引言 在知识经济时代&#xff0c;专家管理系统成为了企业优化知识资源、提升决策效率的重要工具。本文将介绍一款创新的专家管理系统&#xff0c;该系统通过智能化工具&#xff0c;助力企业实现专家资源的高效管理和利用。 平台概述 专家管理系统采用前后端分离的架构设计&a…

css基础-选择器

选择器进阶 子串选择器 /* 匹配 href 以 "https" 开头的链接 */ a[href^"https"] {color: green; }/* 匹配 href 包含 "example" 的链接 */ a[href*"example"] {text-decoration: underline; }/* 匹配 href 以 ".pdf" 结尾…

Spring Boot属性设置方法及优先级完整说明+表格对比

Spring Boot属性设置方法及优先级完整说明 官网参考&#xff1a; https://docs.spring.io/spring-boot/3.4-SNAPSHOT/reference/features/external-config.html#features.external-config.files 属性设置方法优先级顺序&#xff08;从高到低&#xff09; 命令行参数&#xf…

上门家政小程序实战,从0到1解决方案

一、逻辑分析 上门家政小程序主要涉及用户端和服务端两大部分。用户端需要实现服务浏览、预约下单、订单跟踪等功能&#xff1b;服务端则要处理订单管理、服务人员管理、数据统计等任务。以下是详细的功能模块分析&#xff1a; 用户注册与登录&#xff1a;用户通过手机号或第三…

LLVM学习-DragonEgg工具

2.2.2 使用DragonEgg和LLVM工具了解编译流程 如果希望看到前端的运行情况&#xff0c;请使用-S -fplugin-arg-dragonegg-emit-ir标志&#xff0c;该标志将产生以LLVM IR代码表示的人工可读文件。 一旦编译器将程序转换为IR则停止编译&#xff0c;并将内存中的表示内容写入磁盘的…

关于cmd中出现无法识别某某指令的问题

今天来解决以下这个比较常见的问题&#xff0c;安装各种软件都可能会发生&#xff0c;一般是安装时没勾选注册环境变量&#xff0c;导致cmd无法识别该指令。例如mysql&#xff0c;git等&#xff0c;一般初学者可能不太清楚。 解决这类问题最主要的是了解环境变量的概念&#x…

ThreadLocal详解与高频场景实战指南

ThreadLocal详解与高频场景实战指南 1. ThreadLocal概述 ThreadLocal是Java提供的线程本地变量机制&#xff0c;用于实现线程级别的数据隔离。每个访问该变量的线程都会获得独立的变量副本&#xff0c;适用于需要避免线程间共享数据的场景。 特点&#xff1a; 线程封闭性&a…

【C++初阶】---类和对象(上)

1.类的定义 1.1类的定义格式 • class为定义类的关键字&#xff0c;Data为类的名字&#xff0c;{}中为类的主体&#xff0c;注意类定义结束时后⾯分号不能省略。类体中内容称为类的成员&#xff1a;类中的变量称为类的属性或成员变量;类中的函数称为类的⽅法或者成员函数。 •…

Rust安装并配置配置vscode编译器

一. 下载rustup-init.exe rust下载网址&#xff1a;Getting started - Rust Programming Language 根据系统&#xff0c;选择适合的exe文件 我选择的的是右边64bit的 打开下载的文件 输入1&#xff0c;回车 二. Visual C 安装 自动下载安装vs 等待安装完毕 三. Rust 安装…

openGl片段着色器的含义

片段着色器的含义及代码中的应用说明&#xff1a; 1. 片段着色器的基本概念 片段着色器&#xff08;Fragment Shader&#xff09;是OpenGL着色器管线中的关键组件&#xff0c;主要用于计算屏幕空间中每个片段&#xff08;对应像素&#xff09;的最终颜色。它是图形渲染流程的…

事务的四大特性(ACID)详解

事务的四大特性&#xff08;ACID&#xff09;详解 在数据库管理系统&#xff08;如 MySQL&#xff09;中&#xff0c;事务&#xff08;Transaction&#xff09; 是指一组要么全部执行、要么全部不执行的数据库操作&#xff0c;通常用于确保数据的完整性和一致性。事务有四大核…

ubuntu设置开机自动运行应用

系统版本&#xff1a;Ubuntu 24.04.1 LTS桌面版 按招网上的资料显示&#xff0c;当前版本主要的实现方式有以下两种&#xff0c; 方式1&#xff1a;通过图形界面的【启动应用程序】设置开机自启动&#xff1b;方式2&#xff1a;配置为服务实现开机自启动。 但是在我的电脑上方…

ECharts各类炫酷图表/3D柱形图

一、前言 最近鸡米花实现了各类的炫酷的图表&#xff0c;有3D柱形图、双边柱形图以及异形柱形图&#xff0c;好了&#xff0c;直接上图&#xff1a; 二、效果图 一个个来吧&#xff0c;下面就是代码啦&#xff0c;注意&#xff0c;一下图表展示的宽高均为800px*300px 三、异形横…

机器人原点丢失后找回原点的解决方案与步骤

机器人原点丢失后找回原点的解决方案与步骤 在机器人运行过程中&#xff0c;原点丢失可能导致定位错误、运动失控等问题&#xff0c;常见于机械臂、AGV&#xff08;自动导引车&#xff09;、3D打印机等设备。以下是针对原点丢失问题的系统性解决方案及详细步骤&#xff0c;涵盖…

HCIP——园区网、VLAN

园区网 园区网搭建核心思路&#xff1a;冗余&#xff08;备份&#xff09;--- 保证其健壮性 1、设备冗余 2、线路冗余 3、网关冗余 4、ups&#xff08;不间断电源&#xff09;冗余—— 能不断电&#xff08;物理层&#xff09; 三层交换机和路由器的选择&#xff1a; 三层交换…

虚拟机(二):Android 篇

虚拟机&#xff08;一&#xff09;&#xff1a;Java 篇 虚拟机&#xff08;二&#xff09;&#xff1a;Android 篇 Dalvik和JVM区别 Dalvik 基于寄存器&#xff0c;而 JVM 基于栈。 基于栈的架构具有更好的可移植性&#xff0c;因为其实现不依赖于物理寄存器基于栈的架构通常指…

Android Token的原理和本地安全存储

Android Token的原理和本地安全存储 前言 在移动应用开发中,Token是实现用户身份验证和授权的重要机制。本文将深入介绍Token的原理,以及在Android平台上如何安全地存储Token,帮助开发者构建可靠的身份验证系统。 基础知识 1. Token概述 1.1 Token的作用 身份验证授权访…

Vue Kubernetes项目 局部布局 下拉菜单

下拉菜单 [el-dropdown] 下拉菜单也比较简单&#xff0c;就是类似于按钮下面来一个下拉菜单。 示例Demo如下&#xff1a; <template><el-dropdown><span class"el-dropdown-link">下拉菜单<i class"el-icon-arrow-down el-icon--right&q…