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

Python网络请求库requests使用详述

Python的 requests库是一种广泛使用的HTTP客户端库,它允许你发送HTTP/1.1请求易如反掌。它的设计目标是使HTTP请求对开发者来说尽可能得简单快捷。requests库遵循RFC 7231的HTTP协议标准,并提供了多种功能,比如会话对象、持久连接和请求钩子。

安装

你可以使用 pip安装 requests库:

pip install requests

创建请求

发送请求最简单的方式是直接使用 requests.getrequests.post等函数:

import requests
response = requests.get('https://api.example.com/data')

requests同样支持其他HTTP方法,如 HEADPUTDELETEPATCHOPTIONS

请求参数

发送GET请求时,可以使用 params关键字参数来提供URL参数:

payload = {'key1': 'value1', 'key2': 'value2'}
response = requests.get('https://httpbin.org/get', params=payload)

对于POST请求,可以使用 data关键字参数来提供表单数据:

payload = {'key1': 'value1', 'key2': 'value2'}
response = requests.post("https://api.example.com/post", data=payload)

请求头部

请求的头部可以通过一个字典传递给 headers参数:

headers = {'user-agent': 'my-app/0.0.1'}
response = requests.get('https://api.example.com/data', headers=headers)

JSON请求

requests可以很方便的处理JSON类型的请求,通过简单地传递一个字典给 json参数,它会自动被转换成JSON:

response = requests.post('https://api.example.com/data', json={"my": "data"})

响应内容

响应的内容可以通过 response.text来访问,这会返回一个Unicode形式的响应文本。为了获取字节形式的响应体,你可以访问 response.content

print(response.text)

如果响应是JSON格式,可以直接用 response.json()方法来解析:

print(response.json())

错误处理

requests可以通过 response.raise_for_status()来抛出异常,当遇到网络问题(例如:DNS查询失败、拒绝连接等)或失效的HTTP响应时。

try:response.raise_for_status()
except requests.exceptions.HTTPError as err:print(err)

超时

你可以告诉 requests库,它应该等待多久连接和读取数据的超时时间。

response = requests.get('https://api.example.com/data', timeout=1)

这里的超时时间是秒为单位。

会话对象

为了同一站点上的多个请求维护一些持久化的连接,你可以使用会话对象。会话对象也可以跨请求保持某些参数。

with requests.Session() as session:session.headers.update({'x-test': 'true'})response = session.get('https://httpbin.org/headers', headers={'x-test2': 'false'})

会话还可以用于持久化某些参数,如cookies。

安全和身份验证

requests支持多种身份验证形式,最简单的是HTTP基本认证:

from requests.auth import HTTPBasicAuth
response = requests.get('https://api.example.com/data', auth=HTTPBasicAuth('user', 'pass'))

同时也支持摘要认证、OAuth认证等。

SSL证书验证

默认情况下,requests会验证HTTPS请求的SSL证书,如果证书验证失败,它会抛出一个 SSLError。你可以通过设置 verify=False来忽略SSL证书验证,但这通常是不推荐的,因为它会降低安全性。

response = requests.get('https://api.example.com/data', verify=False)
http://www.dtcms.com/a/394462.html

相关文章:

  • B站 弹幕 相关工具
  • 23 webUI应用基础案例-线稿上色
  • 【MicroPython编程】-深入了解MicroPython 的垃圾收集
  • STM32F429I-DISC1【板载LED呼吸灯】
  • OBOO鸥柏工业触摸屏:信创国产化芯片驱动,展现军工级卓越性能
  • Ubantu命令行指令大全
  • 字节面试题:正则化技术如何影响网络梯度
  • Java进阶教程,全面剖析Java多线程编程,死锁,笔记15
  • 【含文档+PPT+源码】基于SpringBoot+Vue的车牌识别实时交通流量统计系统
  • C++动态规划4
  • chmod命令
  • kernel 6.6中新增的EEVDF特性
  • MATLAB M代码解释器设计与C++实现
  • nivida jetson orinnx torch环境搭建
  • Java进阶教程,全面剖析Java多线程编程,线程的生命周期,笔记11
  • Javase 基础加强 —— 12 网络编程
  • 【04】EPGF 架构搭建教程之 工具环境变量的配置
  • Oracle -运维学习路线 --学习篇1
  • 三个余弦:平方和凑成1时会发生什么
  • 碧蓝航线装备参数探究——关于金色之耻
  • Golang圖書館
  • linux命令--迭代积累
  • Unity2D-物理系统
  • 崩铁 预言算牌 解谜
  • 解锁AI巨型模型训练:DeepSpeed ZeRO Offload 全面指南
  • python语言中的常用容器(集合)
  • Python 程序控制流程综合编程
  • Java进阶教程,全面剖析Java多线程编程,同步方法,笔记13
  • 1.6 虚拟机 (答案见原书 P33)
  • 【C++练习】26.在 C++ 中,不使用 “strcpy“ 函数将一个字符串复制到另一个字符串