Python requests库教程:发送HTTP请求完全指南

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

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

开始课程

安装与配置requests库

requests库并非Python标准库的一部分,需要单独安装。在终端中执行以下命令:

pip install requests

验证安装是否成功:

import requests
print(requests.__version__)

什么是HTTP请求以及为何选择requests库

HTTP(超文本传输协议)是客户端与服务器之间传输数据的协议。requests是Python第三方库,相比内置的urllib模块,它能极大简化HTTP请求的发送过程。

requests库的核心优势

  • 代码简洁易读,上手快速
  • 全面支持HTTP方法(GET、POST、PUT、DELETE、PATCH)
  • 自动处理JSON数据
  • 内置Cookie和会话管理
  • 灵活的请求头和参数配置
  • 完善的错误与异常处理机制
  • 支持代理服务器和SSL证书验证

HTTP核心方法实战示例

GET请求:获取数据

GET请求用于从服务器获取数据,不会修改服务器资源。

import requests

# 简单的GET请求
response = requests.get('https://api.github.com')
print(response.status_code)  # 200
print(response.text)         # 响应内容

GET请求传递参数

# 通过字典传递参数
params = {
    'q': 'python',
    'sort': 'stars',
    'order': 'desc',
    'page': 1
}

response = requests.get('https://api.github.com/search/repositories', params=params)
print(response.url)  # 查看最终带参数的URL

POST请求:提交数据

POST请求用于向服务器发送数据并创建新资源。

# POST请求发送表单数据
data = {
    'username': 'test_user',
    'password': 'secure_password',
    'email': 'test@example.com'
}

response = requests.post('https://httpbin.org/post', data=data)
print(response.json())

POST请求发送JSON数据

# 发送JSON格式数据
json_data = {
    'title': '新文章',
    'body': '文章内容',
    'userId': 1
}

response = requests.post(
    'https://jsonplaceholder.typicode.com/posts',
    json=json_data
)
print(response.json())

PUT请求:更新数据

PUT请求用于完整更新服务器上的现有资源。

update_data = {
    'id': 1,
    'title': '更新后的标题',
    'body': '新的内容',
    'userId': 1
}

response = requests.put(
    'https://jsonplaceholder.typicode.com/posts/1',
    json=update_data
)
print(f"状态码: {response.status_code}")
print(response.json())

PATCH请求:部分更新

PATCH用于对资源进行局部更新。

patch_data = {'title': '部分更新后的标题'}

response = requests.patch(
    'https://jsonplaceholder.typicode.com/posts/1',
    json=patch_data
)
print(response.json())

DELETE请求:删除数据

DELETE请求用于删除服务器上的资源。

response = requests.delete('https://jsonplaceholder.typicode.com/posts/1')
print(f"删除状态: {response.status_code}")

HTTP请求头操作

请求头包含请求的元数据,可以向服务器传递额外信息。

headers = {
    'User-Agent': 'Mozilla                

博客

书籍推荐