Python系列之requests

requests

requests 是一个用于发送 HTTP 请求的 Python 库。它提供了简单易用的 API,可以轻松地与 Web 服务进行交互。 它支持 GET、POST、PUT、DELETE 等多种 HTTP 方法,并且可以处理 Cookies、会话、文件上传等常见的 Web 操作。

1 安装

pip install requests

2 使用

2.1 GET 请求

import requests

url = "https://api.example.com/data"  # 替换为实际的 API URL
response = requests.get(url)
response_time = response.elapsed.total_seconds()  # 获取响应时间

if response.status_code == 200:
    data = response.json()  # 将响应内容解析为 JSON 格式
    print(data)
else:
    print(f"请求失败,状态码:{response.status_code}")
print(f"响应时间:{response_time} 秒")

2.2 POST 请求

import requests

url = "https://api.example.com/data"  # 替换为实际的 API URL
data = {
    "key1": "value1",
    "key2": "value2"
}
response = requests.post(url, json=data)  # 使用 json 参数自动将数据转换为 JSON 格式
response_time = response.elapsed.total_seconds()  # 获取响应时间

if response.status_code == 201:
    print("数据已成功发送")
else:
    print(f"请求失败,状态码:{response.status_code}")
print(f"响应内容:{response.text}")
print(f"响应时间:{response_time} 秒")

2.3 处理 Cookies

import requests

url = "https://api.example.com/login"  # 替换为实际的登录 URL
data = {
    "username": "your_username",
    "password": "your_password"
}
response = requests.post(url, data=data)
response_time = response.elapsed.total_seconds()  # 获取响应时间

if response.status_code == 200:
    # 登录成功,获取 Cookies
    cookies = response.cookies
    # 使用 Cookies 发送后续请求
    url = "https://api.example.com/user_data"
    response = requests.get(url, cookies=cookies)
    if response.status_code == 200:
        user_data = response.json()
        print(user_data)
    else:
        print(f"请求失败,状态码:{response.status_code}")
else:
    print(f"登录失败,状态码:{response.status_code}")

2.4 上传文件

import requests

url = "https://api.example.com/upload"  # 替换为实际的文件上传 URL
with open("example.txt", "rb") as file:
    files = {
        "file": ("filename.txt", file, "text/plain")  # (文件名, 文件对象, MIME类型)
    }
    response = requests.post(url, files=files)
    response_time = response.elapsed.total_seconds()  # 获取响应时间

if response.status_code == 200:
    print("文件上传成功")
else:
    print(f"请求失败,状态码:{response.status_code}")
print(f"响应时间:{response_time} 秒")

2.5 设置请求头

import requests

url = "https://api.example.com/data"  # 替换为实际的 API URL
headers = {
    "Authorization": "Bearer your_token_here",  # 替换为实际的认证令牌
    "Content-Type": "application/json",
    "User-Agent": "My Python App"
}
response = requests.get(url, headers=headers)
response_time = response.elapsed.total_seconds()  # 获取响应时间

if response.status_code == 200:
    data = response.json()
    print(data)
else:
    print(f"请求失败,状态码:{response.status_code}")
print(f"响应时间:{response_time} 秒")