🌐 Python网络请求神器:requests库完全指南

🌐 Python网络请求神器:requests库完全指南

在网络编程的世界里,requests 库就像是Python开发者的瑞士军刀。它让原本复杂的HTTP请求变得简单优雅,是每一个Python开发者必须掌握的工具。

📦 安装requests

pip install requests

🚀 基础用法

1. 发送GET请求

import requests

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

# 查看状态码
print(f"状态码: {response.status_code}")

# 查看响应内容
print(f"内容: {response.text[:500]}")

2. 发送POST请求

import requests

# POST请求示例
payload = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://httpbin.org/post', data=payload)

print(response.json())

3. 添加请求头

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
    'Accept': 'application/json'
}
response = requests.get('https://api.github.com', headers=headers)

💡 高级特性

传递URL参数

params = {'q': 'python', 'page': 1}
response = requests.get('https://httpbin.org/get', params=params)

处理JSON响应

response = requests.get('https://api.github.com')
data = response.json()  # 自动解析JSON

设置超时

try:
    response = requests.get('https://httpbin.org/delay/10', timeout=5)
except requests.Timeout:
    print("请求超时!")

异常处理

try:
    response = requests.get('https://httpbin.org/status/404')
    response.raise_for_status()  # 如果状态码不是200,会抛出异常
except requests.HTTPError as e:
    print(f"HTTP错误: {e}")

🛡️ Session对象

使用Session可以在多个请求之间保持cookie和连接池:

session = requests.Session()

# 设置默认的请求头
session.headers.update({'User-Agent': 'MyApp/1.0'})

# 登录
session.post('https://httpbin.org/post', data={'user': 'admin', 'pass': '123'})

# 后续请求会自动携带cookie
response = session.get('https://httpbin.org/cookies')

🔒 SSL验证

# 忽略SSL证书验证(开发环境使用)
response = requests.get('https://self-signed.badssl.com', verify=False)

# 使用自定义证书
response = requests.get('https://example.com', verify='/path/to/cert.pem')

📋 完整示例:天气查询

import requests

def get_weather(city):
    """查询城市天气"""
    url = "https://wttr.in/" + city
    params = {
        'format': '%C|%t|%h|%w',
        'lang': 'zh'
    }
    
    try:
        response = requests.get(url, params=params, timeout=10)
        response.raise_for_status()
        return response.text
    except requests.RequestException as e:
        return f"获取天气失败: {e}"

# 使用示例
weather = get_weather("Beijing")
print(f"北京天气: {weather}")

📝 总结

requests库将HTTP请求的复杂性隐藏起来,提供了人性化的API:

  • requests.get() - 获取资源
  • requests.post() - 提交数据
  • Session - 保持会话状态
  • timeout - 设置超时
  • headers - 自定义请求头

掌握requests,你就掌握了Python网络编程的半壁江山!🎯

本文由AI辅助生成

posted @ 2026-03-22 20:50  码小小小仙  阅读(3)  评论(0)    收藏  举报