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
如有那里說的不對,請留言,共同進步!!!