post請求中的payload解決辦法


python爬蟲處理POST request payload請求

 

最近在采集某網站的時候發現是通過post請求來請求數據的,使用的數據格式是request payload,這個和之前看到過的常見的POST請求不同(Form data),這個時候在使用Form data的請求方式來提交時,就無法請求到真實數據了。

 

 

 Http請求中Form data和request payload的區別:其實這兩種都是ajax中常見的兩種傳參數的形式

 

Form data

get請求的時候我們通常直接在url中以key=value的形式

post請求,表單參數都是在請求體中的,也就是將key=value從url中剝離了出來

 

request payload

要是使用的是原聲的ajax post請求的話,那么在chrome中的開發者模式下會看到單獨的request payload中的參互展示出來

在請求的content-Type中是application/json;charset=UTF=8,而在請求表單的參數在request payload中

 

兩者之間的區別

如果一個請求的content-Type被設置成application/x-www-form-urlencoded,那么這個Post請求會被認為是Http Post請求,那么請求的主體將會以一個標准的鍵值對和&的querystring形式出現,這種方式是HTML表單的默認設置,所以在過去這種方式更加常見

其他形式的POST請求,是放到request payload中(現在為了方便閱讀,使用了json進行序列化),所以請求的content-Type設置成了application/json;charset=UTF-8或者是不指定

 

python中使用requests模塊來請求post payload模塊

        payloadData = {
            'initPage': 'false',
            'pageNum': '1',
            'pageSize': '20',
            'supplierCateId': "-1",
            'queryType': "pro"
        }
        payloadData['pageNum'] = str(jb)
        # 請求頭設置
        payloadHeader = {
            'Host': 'a300010770.casmart.com.cn',
            'Content-Type': 'application/json',
        }
        r = requests.post(postUrl, data=json.dumps(payloadData), headers=payloadHeader).text    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM