使用 Python 的 requests
庂来发送 HTTP 请求非常简单,requests
是一个流行的第三方库,支持各种类型的 HTTP 请求,并且它的 API 设计非常简洁易用。
1. 安装 requests
库
如果你还没有安装 requests
库,可以通过以下命令安装:
pip install requests
2. 发送常见的 HTTP 请求
(1) 发送 GET 请求
GET 请求用于从服务器获取数据。你可以直接使用 requests.get()
方法发送一个 GET 请求。
import requests
# 发送 GET 请求
response = requests.get("https://www.example.com")
# 打印响应内容
print(response.status_code) # 状态码
print(response.text) # 响应体(网页内容)
(2) 发送 POST 请求
POST 请求用于向服务器发送数据。你可以使用 requests.post()
方法发送一个 POST 请求,并在请求中传递数据。
import requests
# 发送 POST 请求并传递数据
data = {"username": "user1", "password": "password123"}
response = requests.post("https://www.example.com/login", data=data)
# 打印响应内容
print(response.status_code)
print(response.text)
(3) 发送带查询参数的 GET 请求
你可以通过传递字典的方式在 GET 请求中添加查询参数。
import requests
# 添加查询参数
params = {"q": "Python", "page": 1}
response = requests.get("https://www.example.com/search", params=params)
# 打印响应内容
print(response.status_code)
print(response.text)
(4) 发送带 JSON 数据的 POST 请求
如果你想发送 JSON 格式的数据,你可以使用 json
参数。
import requests
# 发送 JSON 数据
data = {"username": "user1", "password": "password123"}
response = requests.post("https://www.example.com/login", json=data)
# 打印响应内容
print(response.status_code)
print(response.text)
(5) 添加 HTTP 请求头
你可以通过 headers
参数向请求中添加自定义的 HTTP 头。
import requests
# 设置请求头
headers = {
"User-Agent": "Mozilla/5.0",
"Accept": "application/json"
}
response = requests.get("https://www.example.com", headers=headers)
# 打印响应内容
print(response.status_code)
print(response.text)
(6) 处理响应
响应对象 (response
) 包含了许多有用的信息,比如状态码、响应内容、响应头等。
import requests
response = requests.get("https://www.example.com")
# 获取状态码
print(response.status_code)
# 获取文本响应内容
print(response.text)
# 获取 JSON 响应内容(如果服务器返回的是 JSON 数据)
try:
json_data = response.json()
print(json_data)
except ValueError:
print("响应不是有效的 JSON")
(7) 超时设置
你可以设置请求的超时时间,防止请求一直挂起。
import requests
try:
# 设置请求超时为 5 秒
response = requests.get("https://www.example.com", timeout=5)
print(response.text)
except requests.Timeout:
print("请求超时")
(8) 文件上传
你可以使用 files
参数发送文件。
import requests
# 上传文件
files = {"file": open("example.txt", "rb")}
response = requests.post("https://www.example.com/upload", files=files)
# 打印响应内容
print(response.status_code)
print(response.text)
(9) 处理重定向
requests
默认会自动处理 HTTP 重定向。如果你想禁用这个自动处理,可以使用 allow_redirects
参数。
import requests
response = requests.get("https://www.example.com", allow_redirects=False)
print(response.status_code) # 如果是 3xx,会显示重定向状态码
3. 异常处理
你可以通过 try...except
来捕获网络请求中的异常,例如网络连接错误或请求超时等。
import requests
try:
response = requests.get("https://www.example.com")
response.raise_for_status() # 检查是否返回了 4xx 或 5xx 错误
except requests.exceptions.RequestException as e:
print(f"请求错误: {e}")
总结
requests
是一个非常强大且易于使用的库,用于发送 HTTP 请求。你可以使用它来发送各种 HTTP 请求(GET、POST、PUT、DELETE 等),并处理响应。通过设置请求头、添加查询参数、上传文件等方式,你可以实现很多不同类型的网络请求。