Scrapy回調函數callback傳遞參數的方式


一、概述

默認Scrapy callback只能接函數名,不能傳參數,我如果想給callback傳遞多個參數呢?

回調方法示例:

yield Request(url=self.base_url + 'QueryInfo', headers=self.request_headers, method="POST", body=json.dumps(request_params), callback=self.page_query_schools, cb_kwargs=add_params)

callback對應的是page_query_school()即為回調的方法。

 

二、傳遞參數方式

如何向回調方法中傳遞參數呢?
在scrapy1.7之后,是基於cb_kwargs方式傳遞dict類型,可以在回調方式中直接訪問對應的參數值。

add_params = {}
add_params['province_code'] = province_code
add_params['province_name'] = name
yield Request(url=self.base_url + 'QueryInfo', headers=self.request_headers, method="POST", body=json.dumps(request_params), callback=self.page_query_schools, cb_kwargs=add_params)
         
def page_query_schools(self, response, province_code, province_name):        
     # logic definition 

從上述方法中可知, add_params初始化為dict, 放入province_code/province_name兩個值。在page_query_schools()方法中,其中的key值直接以參數傳入方法: province_code/province_name.

 

本文參考鏈接:

https://blog.csdn.net/blueheart20/article/details/108352214

 


免責聲明!

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



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