requests模組傳送POST請求

2022-05-09 22:29:39 字數 1877 閱讀 2354

在http協議中,post提交的資料必須放在訊息主體中,但是協議中並沒有規定必須使用什麼編碼方式,從而導致了提交方式的不同。服務端根據請求頭中的content-type欄位來獲知請求中的訊息主體是用何種方式進行編碼,再對訊息主體進行解析。

具體的編碼方式包括如下:

以form表單形式提交資料,最常見也是大家最熟悉的

以json串提交資料。

- multipart/form-data #

上傳檔案

下面使用requests來傳送上述三種編碼的post請求。

requests提交form表單,一般存在於**的登入,用來提交使用者名稱和密碼。以 為例,在requests中,以form表單形式傳送post請求,只需要將請求的引數構造成乙個字典,然後傳給requests.post()的data引數即可。

**如下:

url = '

'd =

r = requests.post(url, data=d) #

requests.post() 中利用 data 屬性

print r.text

輸出效果如下:

,

"data

":""

,

"files

":{},

"form

":,

"headers

":,

"json

":null,

"origin

":"113.140.11.122",

"url

":""}

對於提交json串,主要是用於傳送ajax請求中,動態載入資料。以拼多多**為例,載入商品的方式為ajax,商品的內容在響應中。

下面把請求頭和請求實體列舉一下:

錯誤寫法:

import

requests

url = "

"data =

headers =

r = requests.post(url=url,data =data,headers=headers)

print(r.text)

列印的內容如下:

正確**是把data進行json編碼,再傳送。**如下:

r = requests.post(url=url,data=json.dumps(data),headers=headers)  #

利用 json 對 字典序列化

這個時候再看一下列印內容,已經正確返回商品內容了

完整**如下:

import

requests

url = "

"data =

headers =

r = requests.post(url=url,json =data,headers=headers) #

直接把字典傳給 requests.post() 的 json 引數

print(r.text)

上傳檔案在爬蟲中使用的很少,不過還是使用requests講解一下使用方式。content-type型別為multipart/form-data,以multipart形式傳送post請求,只需將一檔案傳給  requests.post() 的  files引數  即可。還是以  為例,**如下:

url = '

'files =

r = requests.post(url, files=files #

檔案傳給 requests.post() 的 files 引數

print(r.text)

requests 傳送請求

使用python做介面自動化,必須用到requests這個庫,功能非常的強大,能滿足我們大部分的需求。官網 安裝 pip install requests requests傳送乙個請求非常簡單 import requests basic url 傳送get請求 r requests.get basi...

使用requests模組傳送帶有引數的請求

url編碼 在requests傳送get請求指定引數的格式 方式1 自己拼接乙個帶有引數的url import requests 傳送帶有引數的請求 方式1 拼接url 鍵盤錄入要搜尋的內容獲取搜尋結果 url url key input 請錄入你要搜尋的內容 url url key url url...

Python使用Request傳送POST請求

http協議規定post請求的資料必須放在訊息主體中,但是並沒有規定編碼方式,因此可以使用多種方式對其進行編碼。伺服器端通過請求頭的中content type欄位來獲知請求的訊息主體以何種方式編碼。具體的編碼方式包括 multipart form data 示例 import requests im...