文章目录
一、Requests库简介
Requests是一个广泛使用的Python第三方库,专门用于发送HTTP/HTTPS请求。与Python内置的urllib
相比,Requests提供了更加直观和灵活的API。
1. 安装Requests
pip install requests
2. 为什么选择Requests
- 人性化的接口:Requests的设计哲学是"人类优先",它提供了一个简洁的API,使得发送HTTP请求变得直观易懂。
- 丰富的HTTP方法支持:除了基础的GET和POST请求,Requests还支持其他HTTP方法,如PUT、DELETE、HEAD等。
- 灵活的参数和数据传递:Requests允许用户以多种方式传递查询参数、表单数据、多部分编码的文件等。
- 自动处理Cookies:Requests可以自动处理服务器响应中的Cookies,并在后续请求中发送它们。
- SSL证书验证:默认情况下,Requests会验证HTTPS请求的SSL证书,增加了安全性。
- 会话和连接池:通过会话(Session)对象,Requests可以维持一个持久的连接池,提高了与特定服务器进行连续请求的效率。
二、基本使用
1. 发送请求
a. GET请求
GET请求是最常见的HTTP请求类型,用于从指定的URL检索数据。
import requests
# 发送GET请求
response = requests.get('https://www.example.com')
# 打印响应内容
print(response.text)
b. POST请求
POST请求通常用于向服务器提交数据。例如,填写在线表单时,表单数据通常通过POST请求发送到服务器。
# 发送POST请求,并附带一些数据
response = requests.post('https://www.example.com', data={'key': 'value'})
# 打印响应内容
print(response.text)
2. 处理响应
a. 状态码
HTTP状态码是服务器响应客户端请求的状态的数字代码。例如,200
表示成功,404
表示未找到。
# 打印状态码
print(response.status_code)
b. 响应头
响应头包含了服务器对请求的响应的元数据,例如内容类型、日期、服务器类型等。
# 打印响应头
print(response.headers)
三、高级特性
Requests库不仅提供了基本的HTTP请求功能,还包括一些高级特性,使得处理复杂网络请求变得更加高效和安全。
1. 会话对象
会话(Session)对象允许你在多个请求之间保持某些参数,例如cookies。这在需要处理登录认证或保持会话状态的场景中尤其有用。
import requests
# 创建一个会话对象
session = requests.Session()
# 发送请求,这些请求会共享相同的cookies等设置
response_one = session.get('https://www.example.com/login')
response_two = session.get('https://www.example.com/user')
# 关闭会话
session.close()
使用会话对象可以显著提高效率,尤其是在与同一个服务器进行多次交互时,因为它能够重用底层的TCP连接。
2. 超时设置
在进行网络请求时,设置超时可以防止程序在等待响应时无限期地挂起。
# 发送GET请求,并设置超时为5秒
response = requests.get('https://www.example.com', timeout=5)
如果请求在指定的时间内没有完成,Requests将引发一个超时异常。
3. 错误和异常处理
在使用Requests时,可能会遇到各种错误和异常,例如网络连接问题、超时等。
try:
response = requests.get('https://www.example.com', timeout=5)
response.raise_for_status() # 如果响应状态码不是200,将引发HTTPError异常
except requests.Timeout:
print("请求超时")
except requests.HTTPError as e:
print(f"HTTP错误: {e}")
except requests.RequestException as e:
print(f"请求异常: {e}")