在Python中,requests是一个非常流行的第三方HTTP库,可以用于发送HTTP请求,从而获取网页、API等数据,同时还支持各种HTTP协议和身份验证。本文将从多个角度分析requests模块的使用方法,以便读者更好地掌握它的使用。
基础使用
首先,我们需要安装requests模块。如果您使用的是Python 3.x版本,可以使用以下命令来安装:
```
pip3 install requests
```
如果您使用的是Python 2.x版本,可以使用以下命令来安装:
```
pip install requests
```
安装完成后,我们就可以开始使用requests模块了。以下是一个简单的示例:
```
import requests
response = requests.get('https://www.baidu.com')
print(response.text)
```
以上代码中,我们首先导入了requests模块,然后使用get方法发送了一个GET请求,请求的URL为https://www.baidu.com。最后,我们打印了响应内容。需要注意的是,response.text返回的是Unicode格式的响应内容,如果需要获取原始的二进制数据,可以使用response.content。
请求参数
除了URL之外,我们还可以在请求中添加各种参数。以下是一些常用的参数:
- params:添加GET请求的参数,可以是一个字典或字符串;
- data:添加POST请求的参数,可以是一个字典、元组列表或字符串;
- json:添加POST请求的JSON参数,可以是一个字典;
- headers:添加请求头;
- cookies:添加cookies;
- auth:添加HTTP身份验证。
以下是一个示例:
```
import requests
params = {'key1': 'value1', 'key2': 'value2'}
response = requests.get('https://httpbin.org/get', params=params)
print(response.url)
data = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://httpbin.org/post', data=data)
print(response.text)
json = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://httpbin.org/post', json=json)
print(response.text)
headers = {'user-agent': 'Mozilla/5.0'}
response = requests.get('https://httpbin.org/get', headers=headers)
print(response.text)
cookies = {'key1': 'value1', 'key2': 'value2'}
response = requests.get('https://httpbin.org/cookies', cookies=cookies)
print(response.text)
auth = ('username', 'password')
response = requests.get('https://httpbin.org/basic-auth/username/password', auth=auth)
print(response.text)
```
以上代码中,我们分别演示了添加GET请求参数、POST请求参数、POST JSON参数、请求头、cookies和HTTP身份验证的方法。
响应内容
当我们发送请求后,requests模块会返回一个响应对象,其中包含了响应的各种信息,例如状态码、响应头和响应内容等。以下是一些常用的响应属性和方法:
- status_code:响应状态码;
- headers:响应头,以字典形式返回;
- text:响应内容的Unicode形式;
- content:响应内容的二进制形式;
- json():将响应内容解析为JSON格式。
以下是一个示例:
```
import requests
response = requests.get('https://httpbin.org/get')
print(response.status_code)
print(response.headers)
print(response.text)
print(response.content)
print(response.json())
```
以上代码中,我们演示了获取响应状态码、响应头、响应内容和解析JSON格式内容的方法。
异常处理
在发送请求时,有可能会出现各种异常情况,例如网络连接错误、超时等。requests模块提供了一些异常类,可以用于捕获这些异常。以下是一些常见的异常类:
- requests.exceptions.RequestException:所有异常的基类;
- requests.exceptions.Timeout:请求超时;
- requests.exceptions.ConnectionError:网络连接错误。
以下是一个示例:
```
import requests
from requests.exceptions import RequestException, Timeout, ConnectionError
try:
response = requests.get('https://httpbin.org/get', timeout=0.1)
print(response.text)
except Timeout:
print('请求超时')
except ConnectionError:
print('网络连接错误')
except RequestException as e:
print('其他异常:', e)
```
以上代码中,我们使用了try-except语句捕获了请求超时和网络连接错误的异常,同时还捕获了其他异常并打印了异常信息。
综上所述,requests模块是一个非常实用的第三方HTTP库,可以用于发送HTTP请求,从而获取网页、API等数据。本文从基础使用、请求参数、响应内容和异常处理等多个角度进行了分析和演示,希望对读者有所帮助。