网站首页 > 技术文章 正文
Python 的 requests 库是一个简单易用的 HTTP 客户端库,广泛用于发送 HTTP 请求和处理响应。以下是它的核心用法和常见场景的示例:
1. 安装 requests
bash
pip install requests
2. 基本 GET 请求
python
import requests
response = requests.get("https://api.example.com/data")
print(response.status_code) # 状态码(200表示成功)
print(response.text) # 响应内容(文本格式)
print(response.json()) # 如果响应是 JSON,直接解析为字典
3. 传递 URL 参数
使用 params 参数自动编码查询字符串:
python
params = {"key1": "value1", "key2": "value2"}
response = requests.get("https://api.example.com/data", params=params)
4. 基本 POST 请求
发送表单数据或 JSON 数据:
python
# 表单数据
data = {"key": "value"}
response = requests.post("https://api.example.com/post", data=data)
# JSON 数据
json_data = {"key": "value"}
response = requests.post("https://api.example.com/post", json=json_data)
5. 设置请求头
python
headers = {"User-Agent": "my-app/1.0", "Authorization": "Bearer YOUR_TOKEN"}
response = requests.get("https://api.example.com/data", headers=headers)
6. 处理响应
python
response = requests.get(...)
# 检查请求是否成功
response.raise_for_status() # 如果状态码不是200,抛出异常
# 获取内容
text_content = response.text # 文本格式
binary_content = response.content # 二进制格式(如图片)
json_content = response.json() # 解析为字典(需响应是JSON)
# 获取响应头
print(response.headers["Content-Type"])
7. 处理超时
设置请求超时时间(秒):
python
try:
response = requests.get("https://api.example.com/data", timeout=5)
except requests.exceptions.Timeout:
print("请求超时!")
8. 会话保持(Session)
复用 TCP 连接,保留 Cookies 和头信息:
python
with requests.Session() as session:
session.headers.update({"User-Agent": "my-app/1.0"})
session.get("https://api.example.com/login", params={"user": "name", "pwd": "secret"})
response = session.get("https://api.example.com/protected-data")
9. 处理文件上传
python
files = {"file": open("example.txt", "rb")}
response = requests.post("https://api.example.com/upload", files=files)
10. 代理设置
python
proxies = {
"http": "http://10.10.1.10:3128",
"https": "http://10.10.1.10:1080",
}
response = requests.get("http://example.com", proxies=proxies)
11. 错误处理
python
try:
response = requests.get("https://api.example.com/data")
response.raise_for_status() # 检查 HTTP 错误(4xx/5xx)
except requests.exceptions.HTTPError as http_err:
print(f"HTTP错误: {http_err}")
except requests.exceptions.RequestException as err:
print(f"请求异常: {err}")
12. 禁用 SSL 验证(仅测试环境)
python
response = requests.get("https://api.example.com", verify=False)
13. 重定向控制
禁用自动重定向:
python
response = requests.get("https://example.com", allow_redirects=False)
14. 流式下载大文件
分块读取响应内容,避免内存占用过高:
python
response = requests.get("https://example.com/large-file", stream=True)
with open("large_file.zip", "wb") as f:
for chunk in response.iter_content(chunk_size=8192):
f.write(chunk)
总结
requests 提供了简洁的 API 满足大多数 HTTP 交互需求,适合快速开发。对于高频次或异步场景,可考虑 aiohttp(异步)或 httpx(兼容同步/异步)
猜你喜欢
- 2025-05-21 如何编写Python漏洞验证脚本(单线程和多线程)
- 2025-05-21 Python 爬虫使用固定代理IP
- 2025-05-21 25-3-Python网络编程-UDP 编程示例和HTTP协议
- 2025-05-21 Langflow——高效构建和部署 AI 驱动的代理和工作流
- 2025-05-21 栋察宇宙:Python 中的 requests 库学习介绍
- 2025-05-21 手把手教你用Python盯死竞品组织变动!老板连夜加薪的监控术
- 2025-05-21 Google 在 Cloud Next 2025 发布最全面的 AI 代理战略
- 2025-05-21 免费的IP代理池
- 2025-05-21 「2022 年」崔庆才 Python3 爬虫教程 - 代理的基本原理
- 2025-05-21 使用Python构建高效的HTTP代理服务器
- 05-25Python 3.14 t-string 要来了,它与 f-string 有何不同?
- 05-25Python基础元素语法总结
- 05-25Python中的变量是什么东西?
- 05-25新手常见的python报错及解决方案
- 05-2511-Python变量
- 05-2510个每个人都是需要知道Python问题
- 05-25Python编程:轻松掌握函数定义、类型及其参数传递方式
- 05-25Python基础语法
- 257℃Python短文,Python中的嵌套条件语句(六)
- 257℃python笔记:for循环嵌套。end=""的作用,图形打印
- 256℃PythonNet:实现Python与.Net代码相互调用!
- 251℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 251℃Python实现字符串小写转大写并写入文件
- 106℃原来2025是完美的平方年,一起探索六种平方的算吧
- 91℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 81℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)