scrapy和requests的post請求詳解

2022-06-23 14:27:30 字數 1100 閱讀 1835

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(''%(id,i))),然後傳遞到data。

總結,有時候我們用requests請求能拿到的資料,但是用scrapy.formrequest()怎麼也拿不到資料,這個時候就需要用scrapy.request()來傳送請求,scrapy.request()請求與requests.post()請求用法相同,得到的資料也是相同的。

參考資源:

爬蟲 scrapy框架之遞迴解析和post請求

概要 需求 將糗事百科所有頁碼的作者和段子內容資料進行爬取切持久化儲存 需求分析 每一個頁面對應一個url,則scrapy工程需要對每一個頁碼對應的url依次發起請求,然後通過對應的解析方法進行作者和段子內容的解析。 實現方案 1 將每一個頁碼對應的url存放到爬蟲檔案的起始url列表 start ...

requests和session的區別

request物件的生命週期是針對一個客戶端 說確切點就是一個瀏覽器應用程式 的一次請求,當請求完畢之後,request裡邊的內容就會被釋放...

Get和Post的正解

前言 很多小夥伴對於get和post都是淺層次的理解。這篇文章將帶你從通俗易懂的語言上深入的瞭解get和post。 一,什麼是get pos...