Python中的requests库使用详解
在Python的众多第三方库中,requests
库因其简单易用而广受欢迎。该库用于发送HTTP请求,它封装了底层的网络请求,使得用户能够方便地与网络接口进行交互。无论是从API获取数据,还是进行网页爬虫,requests
库都是一个不可或缺的工具。
安装requests库
在使用requests
库之前,我们需要安装它。可以使用pip命令进行安装:
pip install requests
基本用法
发送GET请求
requests
库通过简单的API提供了发送HTTP请求的功能。我们先来看一个基本的GET请求示例:
import requests
# 发送GET请求
response = requests.get('https://jsonplaceholder.typicode.com/posts')
# 查看响应状态码
print('响应状态码:', response.status_code)
# 打印响应内容
print('响应内容:', response.text)
在这个示例中,我们向一个示例API发送了GET请求,并打印了响应的状态码和内容。response.status_code
可以用来检查请求是否成功,状态码200表明请求成功。
发送POST请求
除了GET请求外,requests
库也支持发送POST请求,通常用于提交数据。以下是一个POST请求的示例:
import requests
# 要提交的数据
data = {
'title': 'foo',
'body': 'bar',
'userId': 1
}
# 发送POST请求
response = requests.post('https://jsonplaceholder.typicode.com/posts', json=data)
# 查看响应状态码
print('响应状态码:', response.status_code)
# 打印响应内容
print('响应内容:', response.json())
在这里,我们通过requests.post
方法发送了一个POST请求,并将数据作为JSON格式提交。response.json()
可直接将响应内容解析为JSON格式的字典。
处理请求参数
在发送GET请求时,我们常常需要携带查询参数。此时,可以使用params
关键字参数:
import requests
# 定义查询参数
params = {
'userId': 1
}
# 发送GET请求
response = requests.get('https://jsonplaceholder.typicode.com/posts', params=params)
# 打印响应内容
print('回应内容:', response.json())
在这个例子中,通过将查询参数添加到params
字典中,我们可以轻松地构建包含查询参数的URL。
添加请求头
有时我们需要在请求中添加自定义请求头,例如API密钥或用户代理,这可以通过headers
参数实现:
import requests
# 自定义请求头
headers = {
'User-Agent': 'my-app/0.0.1',
'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
}
# 发送GET请求
response = requests.get('https://jsonplaceholder.typicode.com/posts', headers=headers)
# 打印响应内容
print('回应内容:', response.json())
错误处理
网络请求可能会失败,因此我们需要添加错误处理代码。例如,我们可以检查状态码,或在请求异常时捕获错误:
import requests
try:
response = requests.get('https://jsonplaceholder.typicode.com/posts/1')
response.raise_for_status() # 检查请求是否成功
print('回应内容:', response.json())
except requests.exceptions.HTTPError as err:
print('HTTP错误:', err)
except requests.exceptions.RequestException as err:
print('请求错误:', err)
在上面的示例中,raise_for_status()
方法用于检查是否有HTTP错误发生,如果状态码不是200,它将抛出异常。
结尾
requests
库为我们提供了一个简洁、方便的方式来进行网络请求。它的功能强大且易于上手,非常适合用于数据获取、API交互以及网页爬取等任务。通过学习和实践,开发者能够充分利用这一工具,提高工作效率。