python實現post請求

2022-05-06 13:30:15 字數 1104 閱讀 6808

今天無論如何都要留下一些什麼東西。。。

可以說今天學到乙個新的乙個東西,也需要分享出來,給更多的人去使用。

今天爬取的資料裡面是客戶端向伺服器端傳送加密過的token和一些頁碼之類的乙個資料。(我主要是想通過翻頁獲取每一頁的資料,該網頁是通過post去獲取的請求,所以需要帶一堆的嵾數才會出來資料)。

pyload=

d=requests.post(url,data=payload,headers=headers)

print(d)

然後伺服器報錯,但是一樣的資料在filder裡面卻是對的,這是什麼原因呢?

後來通過requests的官方文件發現,有這麼一句話:

很多時候你想要傳送的資料並非編碼為表單形式的。如果你傳遞乙個string而不是乙個dict,那麼資料會被直接發布出去。

通過抓包軟體fillder去看看我在pycharm裡面請求和在fillder裡面請求的東西來看,最後返回來的資料的形式完全就是不一樣了,所以對應正確的格式,我把其轉換為string,得出結果和正確一樣的,

可以正確返回的表單的值是這樣子的:

然後我的目的就是把那些引數化為輸出為上面的資料那樣子。

所以最後形式為以下那樣子:

payload = ''

接下來發現又是乙個很尷尬的事情,伺服器直接報錯,504錯誤,開始還去找這是什麼原因,後來在網上看到是這樣子說的:

wireshark抓包發現:

看來requests也需要加上這個頭:

最後我把我內容的headers換成以上headers,結果還真的是成功了。

雖然為什麼是那個頭,我還真的不知道是什麼乙個的原因 。後續知道會陸續去更新的。

馬上看完文件發現乙個問題,就馬上來記下來,在新的版本的requests裡面,除了對dict格式去編碼以外,還可以使用json格式直接去傳遞,然後它就會被自動編碼。這是 2.4.2 版的新加功能:

d=requests.post(url,json=data,headers=headers)

print d

print d.text

總結:這樣子是不是很簡單就可以去實現了呢,而不需要轉換為string之類的呢,看來東西需要不斷的去發現的 。

python實現post請求

pyload d requests.post url,data payload,headers headers print d 然後伺服器報錯,但是一樣的資料在filder裡面卻是對的,這是什麼原因呢?後來通過requests的官方文件發現,有這麼一句話 很多時候你想要傳送的資料並非編碼為表單形式的...

AJAX 實現post請求

server.js 引入rexpress const express require express 2.建立應用物件 express 3.建立路由規則 request 是對請求報文的封裝 response 是對響應報文的封裝 get server request,response post ser...

python傳送post請求

usr bin python02 coding utf 8 03 04importhttplib,urllib 載入模組 05 06 定義需要進行傳送的資料 07params urllib.urlencode 08 定義一些檔案頭 09headers 11 與 構建乙個連線 13 開始進行資料提交 ...