【网页数据获取】requests库使用:发送HTTP请求,获取响应数据
立即解锁
发布时间: 2025-04-14 05:47:13 阅读量: 56 订阅数: 104 


Python网络请求利器:requests库的深度使用指南

# 1. Requests库简介与安装
Requests库是Python的一个HTTP库,用于发送网络请求。它比urllib更加简洁易用,支持HTTP的多种请求方式,如GET、POST等,并且能够处理编码、持久连接、代理等复杂的HTTP请求。它通过一个简洁的API,让我们能够发送各种HTTP请求,从而方便地访问网络资源。
在Python环境中安装Requests库非常简单。可以通过pip命令直接安装:
```bash
pip install requests
```
安装完成后,就可以开始使用Requests库进行各种HTTP请求的发送了。例如,发送一个简单的GET请求,只需要导入requests模块,并调用get方法:
```python
import requests
response = requests.get('https://api.github.com')
print(response.status_code)
```
在本章中,我们将深入了解Requests库的基本概念和安装方法,为后续的HTTP请求发送和处理打下基础。
# 2. 发送基本的HTTP请求
## 2.1 GET请求的发送与处理
### 2.1.1 构建GET请求
GET请求是最常见的HTTP请求类型之一,它用于从服务器获取资源。在Python的Requests库中,发送GET请求非常简单,只需要使用`requests.get()`方法并提供请求的URL。以下是一个简单的例子,展示如何使用Requests库构建一个GET请求并获取响应内容。
```python
import requests
# 目标URL
url = 'http://httpbin.org/get'
# 发送GET请求
response = requests.get(url)
# 打印响应内容
print(response.text)
```
在上面的代码中,我们首先导入了`requests`模块,然后定义了要请求的URL。之后,我们使用`requests.get()`方法发送了一个GET请求,并将返回的响应对象存储在变量`response`中。最后,我们通过访问`response.text`属性打印出了响应的内容。
### 2.1.2 处理响应内容
在获取到响应之后,我们需要对响应的内容进行处理。通常,我们会先检查HTTP响应的状态码以确认请求是否成功。如果状态码为200,则表示请求成功。接下来,我们可以根据需要处理响应的内容。
```python
# 检查HTTP状态码
if response.status_code == 200:
# 解析JSON格式的响应内容
data = response.json()
print(data)
else:
print('请求失败,状态码:', response.status_code)
```
在上面的代码中,我们使用`response.status_code`属性检查了HTTP响应的状态码。如果状态码为200,那么我们将响应的内容解析为JSON格式,并打印出来。如果状态码不是200,我们打印出请求失败的信息和对应的状态码。
## 2.2 POST请求的发送与处理
### 2.2.1 构建POST请求
POST请求用于向服务器提交数据。在构建POST请求时,通常需要指定目标URL和要提交的数据。在Requests库中,可以使用`requests.post()`方法来发送POST请求。以下是如何构建一个简单的POST请求的示例。
```python
import requests
# 目标URL
url = 'http://httpbin.org/post'
# 要提交的数据
data = {
'key1': 'value1',
'key2': 'value2'
}
# 发送POST请求
response = requests.post(url, data=data)
# 打印响应内容
print(response.text)
```
在这个例子中,我们定义了目标URL和要提交的数据,然后使用`requests.post()`方法发送了POST请求。`data`参数包含了我们想要提交给服务器的数据。
### 2.2.2 表单数据与JSON数据的发送
除了简单的键值对数据,我们还可以发送表单数据和JSON数据。表单数据通常用于上传文件或发送表单,而JSON数据则用于提供结构化的数据。
#### 发送表单数据
要发送表单数据,可以使用`files`参数来指定要上传的文件。
```python
import requests
# 目标URL
url = 'http://httpbin.org/post'
# 要上传的文件
files = {
'file': ('filename.jpg', open('image.jpg', 'rb'))
}
# 发送POST请求
response = requests.post(url, files=files)
# 打印响应内容
print(response.text)
```
#### 发送JSON数据
要发送JSON数据,可以使用`json`参数直接传递一个字典。
```python
import requests
# 目标URL
url = 'http://httpbin.org/post'
# 要发送的JSON数据
json_data = {
'key1': 'value1',
'key2': 'value2'
}
# 发送POST请求
response = requests.post(url, json=json_data)
# 打印响应内容
print(response.text)
```
在发送JSON数据时,Requests库会自动将字典转换为JSON格式,并设置正确的`Content-Type`头部为`application/json`。
## 2.3 其他HTTP请求方法
### 2.3.1 DELETE、PUT等请求的使用
除了GET和POST之外,HTTP协议还定义了其他请求方法,如DELETE和PUT。在Requests库中,我们可以通过`requests.delete()`和`requests.put()`方法来发送这些请求。
#### DELETE请求
DELETE请求用于从服务器删除指定资源。以下是如何发送DELETE请求的示例:
```python
import requests
# 目标URL
url = 'http://httpbin.org/delete'
# 发送DELETE请求
response = requests.delete(url)
# 打印响应内容
print(response.text)
```
#### PUT请求
PUT请求用于更新服务器上的资源。以下是如何发送PUT请求的示例:
```python
import requests
# 目标URL
url = 'http://httpbin.org/put'
# 要更新的数据
data = {
'key1': 'value1',
'key2': 'value2'
}
# 发送PUT请求
response = requests.put(url, data=data)
# 打印响应内容
print(response.text)
```
### 2.3.2 请求方法的选择与适用场景
每种HTTP请求方法都有其特定的用途和适用场景:
- GET:从服务器检索数据。
- POST:向服务器提交数据以创建新资源或执行操作。
- PUT:更新服务器上的现有资源。
- DELETE:从服务器删除资源。
- PATCH:对服务器上的现有资源进行部分更新。
- HEAD:获取资源的头部信息而不获取实体内容。
选择正确的请求方法可以提高API的可用性和一致性。例如,如果我们只是想要从服务器获取数据而不对其进行修改,那么GET请求是最合适的选择。如果需要上传文件或发送大量数据,POST请求通常会更合适。
在使用Requests库时,开发者可以根据需求选择不同的HTTP方法来构建请求。正确的使用HTTP方法不仅能够提高数据交互的效率,还能帮助维护API的设计一致性,这对于开发和维护大型应用至关重要。
# 3. 高级HTTP请求功能
## 3.1 请求头和请求体的自定义
### 3.1.1 设置请求头信息
在进行HTTP请求时,请求头(Headers)是不可或缺的一部分,它们能够提供关于请求和响应的额外信息。在Requests库中,设置请求头信息非常简单直观。可以通过传递一个字典给`headers`参数来实现。例如,当需要设置用户代理(User-Agent),以模拟浏览器请求时,可以这样做:
```python
import requests
url = 'http://example.com'
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(url, headers=headers)
print(response.headers)
```
### 3.1.2 构造请求体内容
请求体通常用于发送数据到服务器,尤其是对于POST、PUT等请求方法。在Requests中,可以使用`data`参数发送表单数据,使用`json`参数发送JSON数据。例如,发送表单数据可以如下操作:
```python
import requests
url = 'http://example.com/post'
data = {
'key1': 'value1',
'key2': 'value2'
}
response = requests.post(url, data=data)
print(response.text)
```
对于发送JSON数据,可以使用`json`参数:
```python
import requests
url = 'http://example.com/post'
json_data = {
'key1': 'value1',
'key2': 'value2'
}
response = requests.post(url, json=json_data)
print(response.json())
```
### 3.1.2.1 请求头与请求体的进一步解析
在发送HTTP请求时,正确设置请求头和请求体对于请求的成功至关重要。例如,`Content-Type`头部字段指定了请求体的媒体类型,这对于服务器理解如何处理接收到的数据至关重要。而`Accept`头部字段则指示客户端可以接受哪些响应内容类型。设置`Accept-Encoding`为`gzip, deflate`可以减少传输数据大小,从而提升请求性能。
请求体的构造也遵循相似的逻辑。对于表单数据,键值对被编码为`application/x-www-form-urlencoded`格式发送。而JSON数据则被编码为`application/json`格式发送,这通常用于API请求,因为它们提供了一种标准化的数据格式。
## 3.2 身份验证和会话管理
### 3.2.1 HTTP基本认证
在Web开发中,身份验证是一种常见的安全措施。HTTP基本认证是实现这一目的的一种简单方式。R
0
0
复制全文
相关推荐









