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: