可以使用 files
參數來發送文件到服務器,例如通過 POST
請求上傳文件。
import requests
url = "https://httpbin.org/post"
files = {'file': open('example.txt', 'rb')}
response = requests.post(url, files=files)
print(response.json())
這裡的 files
參數用來指定需要上傳的文件,open()
函數以二進制模式讀取文件。
在網絡請求中,設置超時可以防止程序長時間等待響應。requests
支持設置超時時間,並自動處理異常。
可以使用 timeout
參數來設置超時時間(以秒為單位)。
import requests
try:
response = requests.get("https://httpbin.org/delay/3", timeout=2)
print(response.text)
except requests.Timeout:
print("請求超時")
如果超時時間設置為 2 秒,但服務器延遲 3 秒返回,程序會觸發 Timeout
異常。
requests
模塊會拋出一些常見異常,常用的處理方式如下:
import requests
try:
response = requests.get("https://httpbin.org/get", timeout=2)
response.raise_for_status() # 如果狀態碼不是 200,則拋出 HTTPError
except requests.Timeout:
print("請求超時")
except requests.ConnectionError:
print("網絡連接錯誤")
except requests.HTTPError as e:
print(f"HTTP 錯誤: {e}")
Timeout
:請求超時。ConnectionError
:網絡連接錯誤。HTTPError
:服務器返回的 HTTP 錯誤碼不在 2xx
範圍內。requests.Session()
可以保持與服務器之間的連接,這在需要多次向同一服務器發送請求時比較高效,例如保持登錄狀態、共享 cookies 等。
import requests
session = requests.Session()
# 發送請求並保持會話
response = session.get("https://httpbin.org/cookies/set/sessioncookie/123456")
print(response.text)
# 獲取會話中的 cookies
response = session.get("https://httpbin.org/cookies")
print(response.text)
這樣可以在多個請求之間保持同一個會話,減少服務器的資源消耗。