Requests库快速入门指南:Python HTTP请求的优雅实现
requests 项目地址: https://gitcode.com/gh_mirrors/req/requests
Requests是Python中最受欢迎的HTTP客户端库之一,它以简洁优雅的API设计著称,让HTTP请求变得异常简单。本文将带你快速掌握Requests的核心功能。
准备工作
在开始之前,请确保:
- 已正确安装Requests库
- 使用的是最新版本的Requests
发起HTTP请求
Requests支持所有常见的HTTP方法,使用方式非常直观:
import requests
# GET请求
r = requests.get('https://api.example.com/events')
# POST请求
r = requests.post('https://httpbin.org/post', data={'key': 'value'})
# 其他HTTP方法
r = requests.put('https://httpbin.org/put', data={'key': 'value'})
r = requests.delete('https://httpbin.org/delete')
r = requests.head('https://httpbin.org/get')
r = requests.options('https://httpbin.org/get')
URL参数传递
构建带查询参数的URL时,可以使用params
参数自动编码:
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get('https://httpbin.org/get', params=payload)
print(r.url) # 输出: https://httpbin.org/get?key1=value1&key2=value2
响应内容处理
Requests会自动解码服务器返回的内容:
r = requests.get('https://api.example.com/events')
print(r.text) # 获取文本内容
print(r.content) # 获取二进制内容
print(r.json()) # 获取JSON格式内容
编码处理
Requests会根据HTTP头部自动猜测编码,你也可以手动指定:
print(r.encoding) # 查看当前编码
r.encoding = 'ISO-8859-1' # 修改编码
高级请求功能
自定义请求头
headers = {'user-agent': 'my-app/0.0.1'}
r = requests.get(url, headers=headers)
复杂POST请求
发送表单数据:
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post('https://httpbin.org/post', data=payload)
发送JSON数据:
import json
payload = {'some': 'data'}
r = requests.post(url, data=json.dumps(payload))
# 更简单的方式(requests 2.4.2+)
r = requests.post(url, json=payload)
文件上传
files = {'file': open('report.xls', 'rb')}
r = requests.post(url, files=files)
响应处理
状态码检查
r = requests.get('https://httpbin.org/get')
print(r.status_code) # 200
r.raise_for_status() # 如果状态码表示错误,抛出异常
响应头
print(r.headers)
print(r.headers['Content-Type'])
Cookies
# 获取Cookies
print(r.cookies['example_cookie'])
# 发送Cookies
cookies = dict(cookies_are='working')
r = requests.get(url, cookies=cookies)
重定向与历史记录
Requests默认会跟随重定向:
r = requests.get('http://example.com')
print(r.url) # 最终URL
print(r.history) # 重定向历史
禁用重定向:
r = requests.get('http://example.com', allow_redirects=False)
超时设置
为防止程序挂起,建议总是设置超时:
requests.get('https://example.com', timeout=3) # 3秒超时
总结
Requests库通过简洁的API设计,让Python中的HTTP请求变得异常简单。本文介绍了从基本请求到高级功能的核心用法,掌握这些内容后,你就能应对大多数HTTP请求场景了。对于更复杂的需求,Requests还提供了会话保持、代理设置等高级功能,值得进一步探索。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考