zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    0317复利计算的回顾与总结
    0518 Scrum 项目 5.0
    0517 Scrum 项目4.0
    0512 Scrum 项目3.0
    实验三 进程调度模拟程序
    0505 Scrum 项目1.0
    0502团队项目 SCRUM团队成立
    0428 团队项目2.0
    0422团队项目
    实验二 作业调度模拟程序
  • 原文地址:https://www.cnblogs.com/xiao987334176/p/13745793.html
Copyright © 2011-2022 走看看