Requests Python HTTP库:入门到进阶指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Requests库简介

Requests是Python中处理HTTP请求的简单而强大的库。它为REST API操作、网页数据抓取、文件上传和身份验证提供了便捷的接口。凭借简洁的语法和丰富的功能,Requests已成为Python HTTP客户端的行业标准。

Requests库由Kenneth Reitz于2011年创建,旨在让Python中的HTTP请求变得尽可能简单易用。它基于urllib3构建,为HTTP协议提供了高级API。

Requests vs urllib:优势对比

  • 更清晰的语法 — 直观的方法和参数设计
  • 自动处理Cookie和重定向 — 无需额外配置
  • 便捷的JSON、Headers、表单处理 — 内置主流格式支持
  • 支持Session、代理、认证 — 完整的Web服务工具集
  • 支持所有HTTP方法 — GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS
  • 自动内容解码 — 智能编码处理
  • 内置SSL支持 — 默认安全连接

安装与导入

使用pip安装:

pip install requests

升级到最新版本:

pip install --upgrade requests

导入库:

import requests

HTTP请求核心方法

发送GET请求

GET请求用于从服务器获取数据:

response = requests.get('https://api.example.com/data')
print(response.status_code)  # 状态码
print(response.text)         # 响应文本

获取JSON数据:

response = requests.get('https://api.example.com/users')
data = response.json()  # 自动转换为Python字典
print(data)

发送POST请求

POST请求用于向服务器发送数据:

payload = {'username': 'admin', 'password': '123'}
response = requests.post('https://api.example.com/login', data=payload)

发送JSON数据:

user_data = {'name': 'John', 'email': 'john@example.com'}
response = requests.post('https://api.example.com/users', json=user_data)

使用PUT、PATCH和DELETE

# PUT - 完整更新资源
requests.put('https://api.example.com/user/1', json={'name': 'New Name', 'email': 'new@example.com'})

# PATCH - 部分更新资源
requests.patch('https://api.example.com/user/1', json={'active': True})

# DELETE - 删除资源
requests.delete('https://api.example.com/user/1')

# HEAD - 仅获取响应头
response = requests.head('https://api.example.com/user/1')
print(response.headers)

请求参数处理

URL参数可通过字典传递:

params = {'search': 'python', 'limit': 10, 'page': 1}
response = requests.get('https://api.example.com/search', params=params)
print(response.url)  # 显示带参数的完整URL

也可以使用元组列表传递参数:

params = [('tag', 'python'), ('tag', 'web'), ('limit', 20)]
response = requests.get('https://api.example.com/posts', params=params)

推荐