今天要來講的是,讀取送出 Request 後拿回來的 Response。
以下幾種為常用到的方式:
String
import requests
url = "https://www.example.com/"
# 送出 request
r = requests.get(url)
# 印出內容
print(r.text)
# 每次呼叫 r.text 時
# Requests 會根據 r.encoding 定義的編碼去解碼(decode)接收到的內容
# r.encoding 預設基本上是 'utf-8',當然使用者也能自行定義
r.encoding = 'big-5'
# 使用編碼 big-5 印出內容
print(r.text)
# r.text 型態是 string
Binary
import requests
from PIL import Image
from io import BytesIO
url = "https://www.example.com/"
# 送出 request
r = requests.get(url)
# 可以使用 r.content 將 Response 轉成 bytes 型態
# 當 Response 的編碼是 transfer-encoding 時,Requests 套件會自動幫你解碼
# Requests 套件支援的 transfer-encoding 有 gzip、deflate 與 br
# br 需要另外安裝 Brotli library,像是 brotli 或 brotlicffi
# 當然,不一定是 transfer-encoding 時才能用 r.content
# 想使用 bytes 的型態去處理 Response 時,都能使用
print(r.content)
# 將接收到的 binary content 儲存成圖片
i = Image.open(BytesIO(r.content))
# r.content 型態是 bytes
JSON
import requests
url = "https://www.example.com/"
# 送出 request
r = requests.get(url)
# r.json() 會自動將 JSON Response 轉成 python 可存取的型態,像是 dict
response = r.json()
user = response["user"]
print(user)
以上就是幾種常用到的讀取 Response 方式!
更範例可以到官方文件 - Response Content