Python中的requests模块
引言
在进行网络爬虫,发送HTTP请求或与API进行交互时,Python中的requests模块是必不可少的工具之一。requests是一个简单而优雅的HTTP库,能够处理所有HTTP请求类型,并提供了丰富的功能和选项。本文将介绍requests模块的基本用法和一些常见的示例。
安装和导入requests模块
要使用requests模块,首先需要安装它。可以通过以下命令使用pip安装requests:
pip install requests
安装完成后,可以在Python脚本中导入requests模块:
import requests
发送GET请求
发送GET请求是请求远程服务器获取资源的一种常见方式。requests模块使得发送GET请求变得非常简单。以下是一个简单的示例,演示如何使用requests发送GET请求并获取响应:
import requests
url = "
response = requests.get(url)
print(response.text)
在这个示例中,我们首先指定了要发送GET请求的URL。然后,使用requests.get()
方法发送请求并将响应存储在变量response
中。最后,我们使用response.text
属性获取响应的文本内容,并打印出来。
发送POST请求
与GET请求不同,POST请求用于向远程服务器提交数据。requests模块也可以轻松地发送POST请求。以下是一个示例,演示如何使用requests发送POST请求并获取响应:
import requests
url = "
data = {"username": "user123", "password": "pass123"}
response = requests.post(url, data=data)
print(response.text)
在这个示例中,我们首先指定了要发送POST请求的URL,并创建一个字典data
来存储要提交的数据。然后,使用requests.post()
方法发送请求并将响应存储在变量response
中。最后,我们使用response.text
属性获取响应的文本内容,并打印出来。
处理响应
requests模块提供了许多方法来处理响应的不同方面。以下是一些常用的方法和属性:
response.status_code
:获取响应的状态码。response.headers
:获取响应的头信息。response.json()
:将响应的内容解析为JSON格式。response.content
:获取响应的二进制内容。
以下是一个示例,演示如何使用这些方法和属性来处理响应:
import requests
url = "
response = requests.get(url)
print("Status code:", response.status_code)
print("Headers:", response.headers)
print("JSON response:", response.json())
print("Binary content:", response.content)
在这个示例中,我们首先发送了一个GET请求,并获取响应存储在变量response
中。然后,我们使用response.status_code
属性获取响应的状态码,并使用其他方法和属性处理响应的其他方面。
请求头和查询参数
requests模块允许我们指定请求的头信息和查询参数。以下是一个示例,演示如何使用requests发送带有自定义头信息和查询参数的GET请求:
import requests
url = "
headers = {"User-Agent": "Mozilla/5.0"}
params = {"page": 1, "limit": 10}
response = requests.get(url, headers=headers, params=params)
print(response.text)
在这个示例中,我们首先指定了要发送GET请求的URL,并创建一个字典headers
来存储自定义头信息。然后,我们创建一个字典params
来存储查询参数。最后,我们使用requests.get()
方法发送请求并将自定义头信息和查询参数传递给它。
错误处理
在发送请求时,可能会遇到各种错误。requests模块提供了一些方法来处理这些错误。以下是一个示例,演示如何处理请求过程中可能发生的异常:
import requests
url = "
try:
response = requests.get(url)
response.raise_for_status()
print(response.text)
except requests.exceptions.HTTPError as errh: