scrapy和requests的post請求詳解

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

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()請求用法相同,得到的資料也是相同的。

參考資源:

requests庫和Scrapy比較

相同點 兩者都可以進行頁面請求和爬取,python爬蟲的兩個重要技術路線 兩者可用性都好,文件豐富,入門簡單 兩者都沒有處理js 提交表單 對應驗證碼等功能功能 可擴充套件 requests scrapy 頁面級爬蟲 級爬蟲 功能庫框架 併發性考慮不足,效能較差 併發性好,效能較高 重點在於爬蟲結構...

使用requests或scrapy爬取拉勾動態資料

import requests import time headers session requests.session session會話保持 session.headers.update headers 更新headers get請求的位址為headers裡面的 referer 的位址 sess...

requests的介紹和學習

requests是乙個用於在程式中進行http協議下的get和post請求的庫。easy install requests或者用 pip install requests安裝好之後,在互動模式下執行 import requests dir requests 從上面的列表中可以看出,在http中常用到...