今天無論如何都要留下一些什麼東西。。。
可以說今天學到乙個新的乙個東西,也需要分享出來,給更多的人去使用。
今天爬取的資料裡面是客戶端向伺服器端傳送加密過的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 開始進行資料提交 ...