scrapy的post簡單請求


1.

重寫start_requests(self) 方法

 

 

2.start_requests(self)的返回值

yield scrapy.FormRequest(url=url, callback=self.parse_post, formdata=data, )

 

url:請求的post地址

callback:回調函數

headers:可以定制頭信息(setting也可以)

formdata:post攜帶的數據,是一個字典

 

2.1如果是表單登陸,scrapy在Fromrequest基礎上還提供了簡便方法

data={'login':'name','password':'content'}

yield scrapy.FormRequest.from_response(
                                 response,
formname=xxx,
formid=xxx,
formnumber=xxx,
formxpath=xxx, callback=self.parse_post, formdata=data, )
spider最好請求的是干凈的login頁面,如果存在多個表單
可以利用一下四個參數來定位你需要的form表單
formname,
formid,
formnumber,
formxpath,

重要返回值:

resposne:自動從response里尋找from表單
formdata:只需要提交網頁表單里的需求值即可

 

附:scrapy是非常強大的,post請求后,就直接自動保存了cookie。

setting.py
# Disable cookies (enabled by default)
# COOKIES_ENABLED = False
默認開啟

可以應用於一下場景:

1.cookie過期時間很長,常見於一些不規范網站

2.能在cookie過期之前把所有的數據拿到

3.配合其他程序使用,例如先使用selenium登陸之后的cookie保存到本地,scrapy發送請求之前先讀取本地cookies。

 

當然,如果你不想post就攜帶cookie在scrapy里也是可以的。

1.直接請求需要cookie信息的url

2.重寫start_requests(self),迭代器返回值加上cookie

1     def start_requests(self):
2        cookies=dict(a='content',b='content')
3         yield scrapy.Request(url=self.start_1, 
4 cookies=cookie  #cookie是一個字典
5 callback=self.parse_save)

 然后在start_1里也可以直接成功回調函數請求需要登錄的url

 注意:這里的cookie如果放在返回值的headers里是不會起效果的,scrapy只會從cookies參數里讀取

 

總而言之,不論是上訴方式還是創建session的方式,都是為了攜帶cookie,方便進行訪問,獲取信息。


免責聲明!

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



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