Python—requests模块

发布于:2025-07-22 ⋅ 阅读:(18) ⋅ 点赞:(0)

Python requests 模块代码演示

requests 是 Python 中一个简单易用的 HTTP 库,用于发送各种 HTTP 请求。下面是一些常见的使用示例:

1. 基本 GET 请求

import requests

# 发送 GET 请求
response = requests.get('https://api.github.com')

# 检查请求是否成功 (状态码 200)
if response.status_code == 200:
    print('请求成功!')
    print('响应内容:', response.text[:200])  # 打印前200个字符
else:
    print('请求失败,状态码:', response.status_code)

2. 带参数的 GET 请求

import requests

# 定义查询参数
params = {
    'q': 'python',
    'sort': 'stars',
    'order': 'desc'
}

# 发送带参数的 GET 请求
response = requests.get('https://api.github.com/search/repositories', params=params)

# 解析 JSON 响应
if response.status_code == 200:
    data = response.json()
    print(f"找到 {data['total_count']} 个仓库")
    print("前几个仓库:")
    for repo in data['items'][:3]:
        print(f"- {repo['name']} ({repo['stargazers_count']} 星)")

3. POST 请求

import requests
import json

# 要发送的数据
data = {
    'name': 'John Doe',
    'email': 'john@example.com'
}

# 发送 POST 请求
response = requests.post(
    'https://httpbin.org/post',
    data=json.dumps(data),  # 将字典转换为JSON字符串
    headers={'Content-Type': 'application/json'}
)

# 检查响应
if response.status_code == 200:
    print('POST 请求成功!')
    print('响应数据:', response.json())

4. 处理响应

import requests

response = requests.get('https://api.github.com/events')

# 不同的响应属性
print("状态码:", response.status_code)
print("响应头:", response.headers['Content-Type'])
print("编码:", response.encoding)
print("文本内容:", response.text[:100])  # 文本格式
print("JSON内容:", response.json()[0])  # 如果响应是JSON格式

5. 错误处理

import requests
from requests.exceptions import RequestException

try:
    response = requests.get('https://api.github.com/nonexistent', timeout=5)
    response.raise_for_status()  # 如果请求失败会抛出异常
except RequestException as e:
    print(f"请求发生错误: {e}")
else:
    print("请求成功!")

6. 会话对象 (保持会话)

import requests

# 创建会话对象
session = requests.Session()

# 设置会话级别的默认值
session.headers.update({'User-Agent': 'MyApp/1.0'})

# 第一次请求 - 会设置cookie
response1 = session.get('https://httpbin.org/cookies/set/sessionid/12345')

# 第二次请求 - 会自动携带之前的cookie
response2 = session.get('https://httpbin.org/cookies')

print(response2.text)

7. 文件上传

import requests

url = 'https://httpbin.org/post'
files = {'file': open('example.txt', 'rb')}

response = requests.post(url, files=files)
print(response.text)

8. 基本认证

import requests
from requests.auth import HTTPBasicAuth

response = requests.get(
    'https://api.github.com/user',
    auth=HTTPBasicAuth('username', 'password')
)

# 或者简写为:
# response = requests.get('https://api.github.com/user', auth=('username', 'password'))

print(response.status_code)

9. 超时设置

import requests

try:
    # 设置连接和读取超时为5秒
    response = requests.get('https://api.github.com', timeout=5)
    print("请求在超时前完成")
except requests.exceptions.Timeout:
    print("请求超时")

10. 代理设置

import requests

proxies = {
    'http': 'http://10.10.1.10:3128',
    'https': 'http://10.10.1.10:1080',
}

response = requests.get('https://api.github.com', proxies=proxies)
print(response.status_code)

这些示例涵盖了 requests 模块的最常用功能。requests 的 API 设计非常直观,使得发送 HTTP 请求变得非常简单。


网站公告

今日签到

点亮在社区的每一天
去签到