# === 第13课:requests 网络请求 ===
import requests
import json
# 1. GET 请求:获取数据
print("--- GET 请求 ---")
url = "https://httpbin.org/get"
response = requests.get(url)
print(f"状态码: {response.status_code}") # 200表示成功
print(f"响应类型: {type(response.text)}")
print(f"响应内容(前100字): {response.text[:100]}")
print()
# 2. 带参数的 GET 请求
print("--- 带参数请求 ---")
params = {
"name": "火鸟",
"course": "Python"
}
response = requests.get("https://httpbin.org/get", params=params)
data = response.json() # 把JSON响应转成字典
print(f"请求参数: {data['args']}")
print()
# 3. POST 请求:提交数据
print("--- POST 请求 ---")
post_data = {
"username": "firebird",
"message": "Hello from Python!"
}
response = requests.post("https://httpbin.org/post", data=post_data)
result = response.json()
print(f"提交的数据: {result['form']}")
print()
# 4. 获取 JSON 数据(模拟API调用)
print("--- 获取JSON数据 ---")
# 使用公开的测试API
response = requests.get("https://httpbin.org/json")
data = response.json()
print(f"JSON数据: {json.dumps(data, ensure_ascii=False, indent=2)[:200]}")
print()
# 5. 设置请求头
print("--- 自定义请求头 ---")
headers = {
"User-Agent": "MyPythonBot/1.0",
"Accept": "application/json"
}
response = requests.get("https://httpbin.org/headers", headers=headers)
result = response.json()
print(f"请求头中的User-Agent: {result['headers']['User-Agent']}")
print()
# 6. 异常处理(第8课知识)
print("--- 异常处理 ---")
try:
response = requests.get("https://httpbin.org/status/404", timeout=5)
response.raise_for_status() # 如果状态码不是200,抛出异常
print("请求成功")
except requests.exceptions.HTTPError:
print(f"HTTP错误: {response.status_code}")
except requests.exceptions.Timeout:
print("请求超时")
except requests.exceptions.ConnectionError:
print("连接失败")
except requests.exceptions.RequestException as e:
print(f"请求异常: {e}")
print()
# 7. 实战:获取公开API数据
print("--- 实战:获取公开信息 ---")
try:
# 获取随机用户信息(公开API)
response = requests.get("https://httpbin.org/uuid", timeout=10)
data = response.json()
print(f"获取到的UUID: {data['uuid']}")
print("网络请求成功!")
except Exception as e:
print(f"请求失败: {e}")
print("提示:该API需要网络连接,请检查网络")
未经允许不得转载:百花谷博客 » 跟着AI学Python 第13课:requests 网络请求

百花谷博客
微信关注,获取更多