
requests库是Python中一个非常流行的HTTP客户端库,它提供了简单易用的API来发送HTTP请求并处理响应。除了基本的GET和POST请求外,requests库还支持许多高级用法,使得它能够应对更复杂的网络请求场景。
1. 会话对象(Session Objects)
requests.Session()对象允许你跨请求保持某些参数,比如cookies、headers和认证信息。这对于需要多个请求来完成的操作特别有用,比如登录到网站后访问受保护的资源。
python复制代码
| import requests | |
| session = requests.Session() | |
| # 设置会话级别的headers | |
| session.headers.update({'User-Agent': 'my-app/0.0.1'}) | |
| # 发送请求,使用会话对象自动管理cookies等 | |
| response = session.get('http://example.com') |
2. 超时和重试
在处理网络请求时,超时和重试机制是非常重要的。requests库允许你为请求设置超时时间,并可以使用第三方库(如urllib3的Retry类)来实现重试逻辑。
python复制代码
| from requests.adapters import HTTPAdapter | |
| from urllib3.util.retry import Retry | |
| # 创建一个重试策略 | |
| retry_strategy = Retry( | |
| total=3, # 总共重试次数 | |
| status_forcelist=[500, 502, 503, 504], # 对哪些状态码进行重试 | |
| method_whitelist=["HEAD", "GET", "OPTIONS"] # 对哪些HTTP方法进行重试 | |
| ) | |
| # 创建一个适配器并应用重试策略 | |
| adapter = HTTPAdapter(max_retries=retry_strategy) | |
| # 创建一个会话对象并挂载适配器 | |
| session = requests.Session() | |
| session.mount("http://", adapter) | |
| session.mount("https://", adapter) |
3. 文件上传和下载
requests库支持文件的上传和下载。对于文件上传,你可以将文件对象作为files参数的一部分传递给请求方法。对于文件下载,你可以将响应内容保存到文件中。
python复制代码
| # 文件上传 | |
| files = {'file': open('report.xls', 'rb')} | |
| response = requests.post('http://example.com/upload', files=files) | |
| # 文件下载 | |
| response = requests.get('http://example.com/largefile.zip', stream=True) | |
| with open('largefile.zip', 'wb') as f: | |
| for chunk in response.iter_content(chunk_size=8192): | |
| f.write(chunk) |
4. 代理支持
requests库允许你通过proxies参数来设置HTTP和HTTPS代理。这对于需要通过特定代理服务器访问网络资源的场景非常有用。
python复制代码
| proxies = { | |
| 'http': 'http://10.10.1.10:3128', | |
| 'https': 'http://10.10.1.10:1080', | |
| } | |
| response = requests.get('http://example.com', proxies=proxies) |
5. SSL验证
在处理HTTPS请求时,requests库默认会验证SSL证书。如果你需要忽略SSL验证(例如,在测试环境中),可以将verify参数设置为False。但请注意,这样做会降低安全性,因为它会使你容易受到中间人攻击。
python复制代码
| response = requests.get('https://example.com', verify=False) |
通过掌握这些高级用法,你可以更加灵活和高效地使用requests库来处理各种复杂的网络请求场景。
6万+

被折叠的 条评论
为什么被折叠?



