在 Python 中,可以使用多种库来发送 HTTP GET
请求,最常见的是 requests
库。以下是如何使用 Python 发送 GET
请求的详细讲解。
1. 安装 requests
库
如果你还没有安装 requests
库,可以通过以下命令安装:
pip install requests
2. 发送简单的 GET
请求
以下是一个简单的示例,演示如何使用 requests
发送 GET
请求并获取响应:
import requests
# 目标 URL
url = "https://jsonplaceholder.typicode.com/posts/1"
# 发送 GET 请求
response = requests.get(url)
# 检查请求是否成功(状态码 200 表示成功)
if response.status_code == 200:
# 打印响应内容(JSON 格式)
print(response.json())
else:
print(f"请求失败,状态码: {response.status_code}")
输出示例:
{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit..."
}
3. 传递查询参数
在 GET
请求中,查询参数通常附加在 URL 的末尾。requests
库允许通过 params
参数传递查询参数。
import requests
# 目标 URL
url = "https://jsonplaceholder.typicode.com/comments"
# 查询参数
params = {
"postId": 1
}
# 发送 GET 请求并传递查询参数
response = requests.get(url, params=params)
# 检查请求是否成功
if response.status_code == 200:
# 打印响应内容
print(response.json())
else:
print(f"请求失败,状态码: {response.status_code}")
输出示例:
[
{
"postId": 1,
"id": 1,
"name": "id labore ex et quam laborum",
"email": "Eliseo@gardner.biz",
"body": "laudantium enim quasi est..."
},
...
]
4. 设置请求头
有时需要在请求中添加自定义的请求头(例如,设置 User-Agent
或授权令牌)。可以通过 headers
参数传递请求头。
import requests
# 目标 URL
url = "https://jsonplaceholder.typicode.com/posts/1"
# 自定义请求头
headers = {
"User-Agent": "MyApp/1.0",
"Authorization": "Bearer YOUR_ACCESS_TOKEN"
}
# 发送 GET 请求并设置请求头
response = requests.get(url, headers=headers)
# 检查请求是否成功
if response.status_code == 200:
print(response.json())
else:
print(f"请求失败,状态码: {response.status_code}")
5. 处理响应
requests
库提供了多种方法来处理响应内容:
response.text
: 获取响应内容(字符串格式)。response.json()
: 如果响应内容是 JSON 格式,可以将其解析为 Python 字典或列表。response.status_code
: 获取 HTTP 状态码。response.headers
: 获取响应头。
import requests
url = "https://jsonplaceholder.typicode.com/posts/1"
response = requests.get(url)
# 获取状态码
print("状态码:", response.status_code)
# 获取响应头
print("响应头:", response.headers)
# 获取响应内容(字符串格式)
print("响应内容:", response.text)
# 获取响应内容(JSON 格式)
print("JSON 数据:", response.json())
6. 错误处理
在实际应用中,网络请求可能会失败(例如,超时或服务器错误)。可以使用 try-except
块来捕获异常。
import requests
url = "https://jsonplaceholder.typicode.com/posts/1"
try:
response = requests.get(url, timeout=5) # 设置超时时间为 5 秒
response.raise_for_status() # 如果状态码不是 200,抛出异常
print(response.json())
except requests.exceptions.RequestException as e:
print(f"请求失败: {e}")
7. 使用其他库发送 GET
请求
除了 requests
,Python 还提供了其他库来发送 HTTP 请求,例如 http.client
或 urllib
。以下是使用 urllib
的示例:
from urllib import request
url = "https://jsonplaceholder.typicode.com/posts/1"
try:
with request.urlopen(url) as response:
data = response.read().decode("utf-8") # 读取响应内容
print(data)
except Exception as e:
print(f"请求失败: {e}")
8. 总结
requests
库 是 Python 中最常用的 HTTP 客户端库,简单易用。- 使用
requests.get()
发送GET
请求。 - 可以通过
params
传递查询参数,通过headers
设置请求头。 - 使用
response.json()
解析 JSON 响应。 - 使用
try-except
处理请求异常。