- 請求教程
- 請求 - 主頁
- 請求 - 概述
- 請求 - 環境設定
- 請求 - HTTP 請求的工作原理?
- 請求 - 使用請求
- 處理 HTTP 請求的響應
- 請求 - HTTP 請求標頭
- 請求 - 處理 GET 請求
- 處理 POST、PUT、PATCH 和 DELETE 請求
- 請求 - 檔案上傳
- 請求 - 使用 Cookies
- 請求 - 處理錯誤
- 請求 - 處理超時
- 請求 - 處理重定向
- 請求 - 處理歷史記錄
- 請求 - 處理會話
- 請求 - SSL 證書
- 請求 - 身份驗證
- 請求 - 事件掛鉤
- 請求 - 代理
- 請求 - 使用請求進行網路抓取
- 請求的實用資源
- 請求 - 快速指南
- 請求 - 實用資源
- 請求 - 討論
請求 - 事件掛鉤
我們可以使用事件掛鉤向被請求的 URL 新增事件。在下例中,我們將新增一個當響應可用時將被呼叫的回撥函式。
示例
若要添加回調,我們需要利用 hooks 作為引數,如下例所示 −
import requests
def printData(r, *args, **kwargs):
print(r.url)
print(r.text)
getdata = requests.get('https://jsonplaceholder.typicode.com/users',
hooks={'response': printData})
輸出
E:\prequests>python makeRequest.py https://jsonplaceholder.typicode.com/users [ { "id": 1, "name": "Leanne Graham", "username": "Bret", "email": "Sincere@april.biz", "address": { "street": "Kulas Light", "suite": "Apt. 556", "city": "Gwenborough", "zipcode": "92998-3874", "geo": { "lat": "-37.3159", "lng": "81.1496" } }, "phone": "1-770-736-8031 x56442", "website": "hildegard.org", "company": { "name": "Romaguera-Crona", "catchPhrase": "Multi-layered client-server neural-net", "bs": "harness real-time e-markets" } } ]
你還可以呼叫多個回撥函式,如下所示 −
示例
import requests
def printRequestedUrl(r, *args, **kwargs):
print(r.url)
def printData(r, *args, **kwargs):
print(r.text)
getdata = requests.get('https://jsonplaceholder.typicode.com/users',
hooks = {'response': [printRequestedUrl, printData]})
輸出
E:\prequests>python makeRequest.py https://jsonplaceholder.typicode.com/users [ { "id": 1, "name": "Leanne Graham", "username": "Bret", "email": "Sincere@april.biz", "address": { "street": "Kulas Light", "suite": "Apt. 556", "city": "Gwenborough", "zipcode": "92998-3874", "geo": { "lat": "-37.3159", "lng": "81.1496" } }, "phone": "1-770-736-8031 x56442", "website": "hildegard.org", "company": { "name": "Romaguera-Crona", "catchPhrase": "Multi-layered client-server neural-net", "bs": "harness real-time e-markets" } } ]
你還可以將掛鉤新增到建立的會話,如下所示 −
示例
import requests
def printData(r, *args, **kwargs):
print(r.text)
s = requests.Session()
s.hooks['response'].append(printData)
s.get('https://jsonplaceholder.typicode.com/users')
輸出
E:\prequests>python makeRequest.py
[
{
"id": 1,
"name": "Leanne Graham",
"username": "Bret",
"email": "Sincere@april.biz",
"address": {
"street": "Kulas Light",
"suite": "Apt. 556",
"city": "Gwenborough",
"zipcode": "92998-3874",
"geo": {
"lat": "-37.3159",
"lng": "81.1496"
}
},
"phone": "1-770-736-8031 x56442",
"website": "hildegard.org",
"company": {
"name": "Romaguera-Crona",
"catchPhrase": "Multi-layered client-server neural-net",
"bs": "harness real-time e-markets"
}
}
]
廣告