使用Python的requests库来发送HTTP请求

90 阅读3分钟

使用 Python 的 requests 庂来发送 HTTP 请求非常简单,requests 是一个流行的第三方库,支持各种类型的 HTTP 请求,并且它的 API 设计非常简洁易用。

a6.png

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 等),并处理响应。通过设置请求头、添加查询参数、上传文件等方式,你可以实现很多不同类型的网络请求。