发布时间:2020-11-05 13:59:53编辑:admin阅读(4685)
默认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
下一篇: Scrapy全站抓取-个人博客
51551
51114
41648
38403
32890
29869
28583
23538
23471
21821
1967°
2669°
2222°
2158°
2606°
2187°
2916°
4841°
4683°
3326°