欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解讀Scrapy回調(diào)函數(shù)callback傳遞參數(shù)的方式

 更新時(shí)間:2022年12月19日 10:32:01   作者:bladestone  
這篇文章主要介紹了解讀Scrapy回調(diào)函數(shù)callback傳遞參數(shù)的方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Scrapy回調(diào)函數(shù)

回調(diào)方法示例:

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對(duì)應(yīng)的是page_query_school()即為回調(diào)的方法。

傳遞參數(shù)方式

如何向回調(diào)方法中傳遞參數(shù)呢?

在scrapy1.7之后,是基于cb_kwargs方式傳遞dict類型,可以在回調(diào)方式中直接訪問對(duì)應(yīng)的參數(shù)值。

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兩個(gè)值。

在page_query_schools()方法中,其中的key值直接以參數(shù)傳入方法: province_code/province_name.

注意事項(xiàng)

錯(cuò)誤的用法:

add_params = {}
add_params['data_item']['province_code'] = province_code
add_params['data_item']['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=dict(data_hsh=add_params))
? ? ? ??
def page_query_schools(self, response, data_hsh): ? ? ? ?
? ? # logic definition?

這種用法的錯(cuò)誤是:data_hsh傳遞是引用,在循環(huán)訪問中,data_hsh是指向相同的結(jié)果值,造成變量的引用有誤,與預(yù)期不符。

正確的做法:cb_kwargs傳遞直接變量屬性值,不要使用復(fù)雜的數(shù)據(jù)結(jié)構(gòu),可以做到不同的屬性值

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論