詳解python requests中的post請求的參數(shù)問題
問題:最新在爬取某站點(diǎn)的時候,發(fā)現(xiàn)在post請求當(dāng)中,參數(shù)構(gòu)造正確卻獲取不到數(shù)據(jù),索性將post的參數(shù)urlencode之后放到post請求的url后面變成get請求,結(jié)果成功獲取到數(shù)據(jù),對此展開疑問。
1.http請求中Form Data和Request Playload的區(qū)別:
Ajax post請求中常用的兩種參數(shù)形式:form data 和 request payload
get請求的時候,我們的參數(shù)直接反映在url里面,為key1=value1&key2=value2形式,如果是post請求,那么表單參數(shù)是在請求體中,也是以key1=value1&key2=value2的形式在請求體中。通過chrome的開發(fā)者工具可以看到如下
a.Form Data類型:
這種情況有兩種處理方式,一個是把這個post請求變成get請求,即把請求參數(shù)通過"?key1=value1&key2=value2"拼接在url當(dāng)中,然后以get方式請求就可以了:response = requests.get(url,headers=headers),其中url為拼接的url
另一種是仍然用post請求,將參數(shù)放在data中:response = requests.post(url,headers=headers,data=data),其中url為post url.

注意上圖中紅圈內(nèi)的內(nèi)容,這里請求頭中的Content-Type為application/x-www-form-urlencoded,點(diǎn)擊Form Data旁邊的view source,變成了key1=value1&key2=value2形式,如下圖,這時你可以將這部分內(nèi)容加到post的Request URL后面使它變成一個get請求,就可以獲取到數(shù)據(jù)了,

b.Request Payload類型

同樣在chrome瀏覽器開發(fā)者工具中可以看到它們不同的地方,Content-Type為application/json,表明需要傳的是一個json類型的對象,點(diǎn)擊view source,如下圖

自動變成了json類型,這時必須發(fā)post請求,將這json對象傳入才可獲取數(shù)據(jù)。形如:
response = requests.post(url,json=data,headers=headers) 相比普通的post,這個post參數(shù)中的data一定要序列化才行。
到此這篇關(guān)于詳解python requests中的post請求的參數(shù)問題的文章就介紹到這了,更多相關(guān)python requests post請求參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
十個Python練手的實(shí)戰(zhàn)項(xiàng)目,學(xué)會這些Python就基本沒問題了(推薦)
這篇文章主要介紹了Python實(shí)戰(zhàn)項(xiàng)目,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
Python中xml和json格式相互轉(zhuǎn)換操作示例
這篇文章主要介紹了Python中xml和json格式相互轉(zhuǎn)換操作,結(jié)合實(shí)例形式分析了xmltodict庫的安裝及xml格式與json格式數(shù)據(jù)相互轉(zhuǎn)換操作技巧,需要的朋友可以參考下2018-12-12
python判斷設(shè)備是否聯(lián)網(wǎng)的方法
這篇文章主要為大家詳細(xì)介紹了python判斷設(shè)備是否聯(lián)網(wǎng)的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-06-06
Python實(shí)現(xiàn)短網(wǎng)址ShortUrl的Hash運(yùn)算實(shí)例講解
這篇文章主要介紹了Python實(shí)現(xiàn)短網(wǎng)址ShortUrl的Hash運(yùn)算,較為詳細(xì)的分析了Python短網(wǎng)址運(yùn)算的算法原理與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2015-08-08
詳解Django定時任務(wù)模塊設(shè)計(jì)與實(shí)踐
這篇文章主要介紹了詳解Django定時任務(wù)模塊設(shè)計(jì)與實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
virtualenv實(shí)現(xiàn)多個版本Python共存
virtualenv用于創(chuàng)建獨(dú)立的Python環(huán)境,多個Python相互獨(dú)立,互不影響,它能夠:1. 在沒有權(quán)限的情況下安裝新套件 2. 不同應(yīng)用可以使用不同的套件版本 3. 套件升級不影響其他應(yīng)用2017-08-08

