Python requests库详解与案例讲解
简介
Python的`requests`库是一个非常流行的HTTP请求库,它简单易用,功能强大。本文将详细讲解如何使用`requests`库进行HTTP请求,包括基本用法和高级功能,并通过案例加深理解。
基本用法
`requests`库提供了多种HTTP方法,如GET、POST、PUT、DELETE等。以下是一些基本用法:
GET请求
import requests
response = requests.get('https://api.example.com/data')
print(response.status_code) # 打印状态码
print(response.json()) # 打印JSON响应内容
POST请求
import requests
import json
url = 'https://api.example.com/data'
data = {'key1': 'value1', 'key2': 'value2'}
headers = {'Content-Type': 'application/json'}
response = requests.post(url, data=json.dumps(data), headers=headers)
print(response.status_code)
print(response.json())
高级功能
自定义请求头
你可以通过`headers`参数来自定义请求头:
headers = {
'User-Agent': 'my-app/0.0.1',
'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
}
response = requests.get('https://api.example.com/data', headers=headers)
处理响应
`requests`库提供了多种方法来处理响应内容,如`text`、`json`、`content`等:
response = requests.get('https://api.example.com/data')
print(response.text) # 以文本形式打印响应内容
print(response.json()) # 以JSON形式打印响应内容
print(response.content) # 以二进制形式打印响应内容
超时设置
你可以通过`timeout`参数来设置请求的超时时间:
try:
response = requests.get('https://api.example.com/data', timeout=5)
print(response.status_code)
except requests.exceptions.Timeout:
print('请求超时!')
案例讲解:获取GitHub用户信息
以下是一个使用`requests`库获取GitHub用户信息的案例:
import requests
def get_github_user_info(username):
url = f'https://api.github.com/users/{username}'
try:
response = requests.get(url)
response.raise_for_status() # 如果响应状态码不是200,则抛出HTTPError异常
return response.json()
except requests.exceptions.RequestException as e:
print(f'请求失败:{e}')
return None
username = 'octocat' # 示例用户名
user_info = get_github_user_info(username)
if user_info:
print(f'用户名:{user_info["login"]}')
print(f'头像URL:{user_info["avatar_url"]}')
print(f'关注者数量:{user_info["followers_count"]}')
在这个案例中,我们定义了一个函数`get_github_user_info`,它接受一个GitHub用户名作为参数,并返回该用户的信息。我们使用`requests.get`方法发送GET请求,并通过`response.raise_for_status()`方法检查响应状态码。如果请求成功,我们返回JSON格式的响应内容,并打印出用户名、头像URL和关注者数量。
总结
本文详细讲解了Python中`requests`库的使用,包括基本用法和高级功能,并通过一个案例加深理解。`requests`库是一个非常强大的HTTP请求库,它简单易用,功能丰富,是Python开发者进行HTTP请求的首选工具。