scrapy和requests的post請求詳解


scrapy.Request(url=url,method="POST",body=formdata,cookies=self.cookie,headers=self.headers,callback=self.get_goods_list)
1、scrapy框架發送post請求有兩種格式
(1)、scrapy.FormRequest(url=url,formdata=formdata,cookies=self.cookie,headers=self.headers,callback=self.get_goods_list),這里的formdata是dict格式的,里面不能存在數字,如果有數字用引號括起來;
(2)、scrapy.Request(url=url,method="POST",body=formdata,cookies=self.cookie,headers=self.headers,callback=self.get_goods_list),這里的formdata必須得是字符串,如果是表單格式,那么需要用json.dumps()轉為字符串格式;

2、requests發送post請求,傳遞的參數也分兩種格式(data和json)
(1)、requests.post(url, data=json.dumps(formdata)),這里面的data用的必須是字符串類型,如果formdata是一個表單(字典),那么用json.dumps(formdata)轉化為字符串;
(2)、
requests.post(url, json=formdata),這里面的formdata就必須是表單格式(字典),如果字典用format添加元素了,那么就會變成字符串,這時就需要用evel從字符串轉化為字典(eval('{"orderby": "0","productTypeId": "%s","currentPage": "%s","pageSize": "12"}' %(id,i))),然后傳遞到data。

總結,有時候我們用requests請求能拿到的數據,但是用
scrapy.FormRequest()怎么也拿不到數據,這個時候就需要用scrapy.Request()來發送請求,scrapy.Request()請求與requests.post()請求用法相同,得到的數據也是相同的。
參考資源:https://www.jb51.net/article/146769.htm

如有那里說的不對,請留言,共同進步!!!


免責聲明!

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



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