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

POST请求 、响应、requests库高级用法

常见请求方式POST请求

代码如下

import requestsdata = {'name':'germey','age':'25'}
r = requests.post("https://www.httpbin.org/post",data=data)
print(r.text)

如果请求方式为POST方式,运行结果如下:

{"args": {}, "data": "", "files": {}, "form": {"age": "25", "name": "germey"}, "headers": {"Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Content-Length": "18", "Content-Type": "application/x-www-form-urlencoded", "Host": "www.httpbin.org", "User-Agent": "python-requests/2.32.3","X-Amzn-Trace-Id": "Root=1-6820767b-7088eb304220c10a777f20b6"},"json": null,"origin": "183.250.210.159","url": "https://www.httpbin.org/post"
}

from部分为提交的数据,证明POST请求成功发送了

发送请求后会得到响应,实列如下

import requestsr = requests.get('https://ssr1.scrape.center/')
print(type(r.status_code),r.status_code)
print(type(r.headers),r.headers)
print(type(r.cookies),r.cookies)
print(type(r.url),r.url)
print(type(r.history),r.history)

这里通过status_code属性得到状态码、通过headers属性得到响应头、通过cookies属性得到Cookie、通过url属性得到URL、通过history属性得到请求历史,打印结果如下

<class 'int'> 200
<class 'requests.structures.CaseInsensitiveDict'> {'Content-Type': 'text/html; charset=utf-8', 'X-Frame-Options': 'DENY', 'X-Content-Type-Options': 'nosniff', 'Expires': 'Sun, 11 May 2025 10:15:12 GMT', 'Strict-Transport-Security': 'max-age=15724800; includeSubDomains', 'Server': 'TencentEdgeOne', 'Cache-Control': 'max-age=600', 'Content-Length': '41667', 'Connection': 'keep-alive', 'Date': 'Sun, 11 May 2025 10:11:29 GMT', 'EO-LOG-UUID': '13904436365551972615', 'EO-Cache-Status': 'MISS'}
<class 'requests.cookies.RequestsCookieJar'> <RequestsCookieJar[]>
<class 'str'> https://ssr1.scrape.center/
<class 'list'> []

headers和cookies这两个属性得到的结果分别是CaseInsensitiveDict和RequestsCookieJar对象

状态码则表示响应状态,可以通过这个数字判断数据是否获取成功

requests库还提供了一个内置的状态码查询对象requests.codes,用法如下

import requestsr = requests.get('https://ssr1.scrape.center/')
exit() if not r.status_code ==  requests.codes.ok else print('请求成功')

通过比较返回码和内置的表示成功的状态码,来保证请求是否得到了正常响应,如果是,就是输出请求成功的消息,否则程序终止运行,这里用requests.code.ok得到的成功状态码是200.

文件上传

import requests
files = {'file':open('favicon.ico','rb')}   #favicon.ico 是文件名
r = requests.post('https///www.httpbin.org/post',files=files)
print(r.text)

文件需要和当前脚本保存在同一目录下,需要上传其他文件也只需要更改下代码即可

Cookie设置

获取Cookie实例

import requestsr = requests.get('https://www.baidu.com')
print(r.cookies)
for key,value in r.cookies.items():print(key + '=' + value)

结果如下

<RequestsCookieJar[<Cookie BDORZ=27315 for .baidu.com/>]>
BDORZ=27315

这里我们首先调用cookies属性,成功得到Cookie,可以发现它属于RequestCookie]ar 类型。然后调用items 方法将 Cookie 转化为由元组组成的列表,遍历输出每一个Cookie 条目的名称和值,实现对 Cookie 的遍历解析。

http://www.xdnf.cn/news/5506.html

相关文章:

  • 甜蜜聊天话术库
  • Go语言标识符
  • 嵌入式STM32学习——433M无线遥控灯
  • AI-Talk开发板之驱动1.28寸圆屏
  • 深入理解 Polly:.NET Core 中的健壮错误处理策略
  • HTTP/1.1 host虚拟主机详解
  • USB学习【6】USB传输错误的处理
  • Typescript 源码核心流程
  • 【C语言练习】035. 编写结构体的函数
  • MySQL视图深度解析:从基础语法到高级应用
  • Mask-aware Pixel-Shuffle Down-Sampling (MPD) 下采样
  • vector 常见用法及模拟
  • 算法题(144):跳石头
  • 游戏逆向开发全阶段电子资料分享 – 从入门到精通实战教程
  • 软件架构师知识点总结
  • nfs挂载
  • python实现用户登录
  • 系统架构设计(四):架构风格总结
  • 常见的 DCGM 设备级别指标及其含义
  • 2024睿抗编程赛国赛-题解
  • 作业...
  • 【C/C++】无符号调试:GDB解栈实战指南
  • nrf52832 ble_app_templete_s132及nrf5_sdk packs下载安装
  • 使用FastAPI和React以及MongoDB构建全栈Web应用07 FastAPI实现经典三层架构
  • 2025低空经济发展趋势
  • SQL:SELF JOIN(自连接)与CROSS JOIN(交叉连接)
  • Java从入门到精通 - 数组
  • 排队论基础一:马尔可夫排队模型
  • 力扣刷题Day 46:搜索二维矩阵 II(240)
  • 怎样选择成长股 读书笔记(一)