requests
库是Python中用于发送HTTP请求的常用库。它提供了一个简洁且功能强大的API,使得开发者能够轻松地发送各种HTTP请求(如GET、POST等)并获取响应。下面是对requests
库的深入了解:
安装
你可以使用pip来安装requests
库:
bash复制代码
pip install requests |
基本用法
发送GET请求
发送GET请求并获取响应内容非常简单:
python复制代码
import requests | |
response = requests.get('https://www.example.com') | |
print(response.text) # 输出响应内容 |
发送POST请求
发送POST请求并携带数据:
python复制代码
import requests | |
url = 'https://www.example.com/post' | |
data = {'key1': 'value1', 'key2': 'value2'} | |
response = requests.post(url, data=data) | |
print(response.text) |
发送带有Headers的请求
你可以为请求添加自定义的headers:
python复制代码
import requests | |
headers = { | |
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} | |
response = requests.get('https://www.example.com', headers=headers) |
处理响应
响应对象提供了很多有用的方法和属性:
response.status_code
:HTTP响应状态码,如200表示成功。response.headers
:响应头信息。response.text
:响应内容,以Unicode字符串形式返回。response.content
:响应内容,以字节形式返回。response.json()
:如果响应内容是JSON格式,可以调用此方法将其解析为Python对象。response.cookies
:响应中的cookies。response.raise_for_status()
:如果发送了一个错误的请求(非200响应),则产生HTTPError异常。
高级用法
会话(Session)对象
使用Session
对象可以跨请求保持某些参数,如cookies或headers,非常适合于登录场景:
python复制代码
import requests | |
with requests.Session() as session: | |
response = session.get('https://www.example.com/login') | |
# 处理登录逻辑... | |
response = session.get('https://www.example.com/user-profile') # 会话中保持登录状态 |
超时设置
可以为请求设置超时时间:
python复制代码
import requests | |
response = requests.get('https://www.example.com', timeout=5) # 超时时间为5秒 |
代理设置
如果需要通过代理发送请求,可以这样设置:
python复制代码
import requests | |
proxies = { | |
'http': 'http://10.10.1.10:3128', | |
'https': 'http://10.10.1.10:1080', | |
} | |
response = requests.get('https://www.example.com', proxies=proxies) |
SSL证书验证
默认情况下,requests
会验证SSL证书。如果需要忽略证书验证(不推荐,除非你确定目标网站是可信的),可以这样做:
python复制代码
import requests | |
response = requests.get('https://www.example.com', verify=False) |
自定义身份验证
对于需要身份验证的请求,可以使用auth
参数:
python复制代码
import requests | |
from requests.auth import HTTPBasicAuth | |
response = requests.get('https://www.example.com/private', auth=HTTPBasicAuth('user', 'pass')) |
这只是requests
库功能的一小部分,它还提供了更多的高级功能,如流式响应、连接池等。通过深入了解requests
库的文档和示例,你可以更好地利用它来构建强大的爬虫或HTTP客户端。