一、模塊核心邏輯
“提交信息到網頁” 是網絡交互關鍵環節,借助?requests
?庫的?post()
?函數,能模擬瀏覽器向網頁發數據(如表單、文件 ),實現信息上傳,讓我們能與網頁背后的服務器 “溝通”,像改密碼、傳文件等操作,都可通過它完成 。
二、瀏覽器提交請求流程(以改密碼為例 )
- 操作觸發:登錄賬戶進改密碼頁面,填 “當前密碼”“新密碼” 等表單 。
- 抓包分析:網頁空白處右鍵 → 檢查 → Network 窗口,輸密碼點 “修改密碼”,Network 會捕獲交互信息,能看到請求方法是?
POST
,還能找到提交的密碼等數據 。 - 數據傳遞:瀏覽器把表單里的密碼等信息,通過?
POST
?請求發給服務器,服務器驗證、處理后返回結果 。
三、post()
?函數詳解
(一)基本形式?
requests.post(url, data=None, json=None, **kwargs)
?
二)參數說明
url
:必填,要提交信息的網頁地址(如改密碼的接口地址 ),告訴?post()
?該把數據發哪 。data
:選填,要發送的數據,可是字典、元組、列表等(常用來傳表單數據,像?{'old_pwd':'123','new_pwd':'456'}
?)。json
:選填,專門傳 JSON 格式數據(當服務器要求接收 JSON 時用 ),傳參后?requests
?會自動設請求頭?Content-Type
?為?application/json
?。**kwargs
:選填,額外配置(如設置請求頭?headers
、超時時間?timeout
?等 ),讓請求更靈活 。
(三)返回值
執行?post()
?后,返回?Response
?對象,和?get()
?類似,可通過?r.text
?看響應內容、r.status_code
?查狀態碼等 。
(四)示例理解
import requests
# 表單數據,存字典里
data = {'OldPassword':'123456python','NewPassword':'123python','ConfirmPassword':'123python'}
# 發 POST 請求,提交數據到指定 url
r = requests.post('https://account.ryjiaoyu.com/change-password', data=data)
# 打印響應內容
print(r.text)
這里?data
?存改密碼的表單數據,post()
?帶著數據發給服務器,雖然實際改密碼還得先登錄,但演示了 “傳數據” 的核心流程 。
四、上傳文件的方法(files
?參數 )
想把文件(如圖片、文檔 )傳到網頁,用?files
?參數,步驟:
- 打開文件:用?
open()
?函數以二進制模式(rb
?)打開文件,得到文件對象 。 - 構造參數:建字典,鍵是服務器接收文件的字段名(如?
file
?),值是文件對象 。 - 發起請求:
post()
?里傳?files
?參數,把文件數據發出去 。
示例代碼
import requests
# 打開文件,'rb' 是二進制讀模式
fp = {'file':open('bitbug.ico', 'rb')}
# 發 POST 請求,上傳文件到指定 url
r = requests.post('可上傳圖片的網址', files=fp)
# 打印響應內容
print(r.text)
代碼里,open()
?拿到文件對象,files
?帶著它發請求,服務器接收后,就能把文件存到指定位置(實際要填正確的上傳網址 )。
總之,“提交信息到網頁” 靠?post()
?函數實現,不管是傳表單改密碼,還是傳文件,都能通過配置參數完成,理解瀏覽器抓包和函數參數,就能靈活模擬各種提交操作啦 ~
?