解读Scrapy回调函数callback传递参数的方式
作者:bladestone 发布时间:2022-12-02 04:12:53
标签:Scrapy,回调函数,callback,传递参数
Scrapy回调函数
回调方法示例:
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.
注意事项
错误的用法:
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
这种用法的错误是:data_hsh传递是引用,在循环访问中,data_hsh是指向相同的结果值,造成变量的引用有误,与预期不符。
正确的做法:cb_kwargs传递直接变量属性值,不要使用复杂的数据结构,可以做到不同的属性值
来源:https://blade.blog.csdn.net/article/details/108352214
0
投稿
猜你喜欢
- 旧版本的代码请见上一篇博文: Python实现带图形界面的炸金花游戏本文尝试在旧版本的基础上,“升级&
- 语法df.drop_duplicates(subset = None,
- 本文实例为大家分享了python绘制汉诺塔的具体代码,供大家参考,具体内容如下源码:import turtleclass Stack: &n
- 一、基本概念APScheduler全称Advanced Python Scheduler 作用为在指定的时间规则执行指定的作业。指定时间规则
- 环境Python 3.7.4pymysql8.0.11 MySQL Community Server读取图片以二进制格式读取图片with o
- 本文实例讲述了Python字符串的全排列算法。分享给大家供大家参考,具体如下:题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列
- ORCLE数据库备份策略 1.通过使用exp和imp命令实现数据库导出和导入。 有三种模式: a. 用户模式: 导出(导入)用户所有对象以及
- 说起来惭愧,总是犯一些小错误,纠结半天,这不应为一个分号的玩意折腾了好半天! 错误时在执行SQL语句的时候发出的,信息如下: Java代码
- 今天调试某页面样式,发现chrome下出现问题,但是同样基于webkit引擎的safari没有问题,很是郁闷。于是寻找针对google ch
- 标题比较麻烦,都有些叙述不清;昨天下午在调试接口框架的时候,遇到了一个问题是这样的:使用python 写了一个函数,return 了两个返回
- 本文实例为大家分享了python webp图片格式转化的具体代码,供大家参考,具体内容如下1、将本地的webp图片转换为jpg2、将下载的w
- python语句与语法1.python简单语句的基本介绍>>> while True: #简单的while循环... re
- Flask框架介绍Flask诞生于2010年,是Armin ronacher用Python语言基于Werkzeug工具箱编写的轻量级Web开
- 可以输入的下拉菜单,不错的一个效果,相信asp之家给大家收集的这个代码会有不少人需要!<html> <head> &
- 用法: 按住鼠标左键拖拽一个框后释放洗洗睡了<!DOCTYPE html public "-//W3C//DTD XHTML
- 在操作系统的文件中,还存在着一种我们可以自己定义的文件属性。这些属性不是保存在文件内容中,也不是直接可以通过 ls -al 所能看到的内容。
- 背景最近处理文本文档时(文件约2GB大小),出现memoryError错误和文件读取太慢的问题,后来找到了两种比较快Large File R
- 上次用Javascript+ASP实现了无刷新的新闻列表,最后还有一个小问题没有解决:下边的分页数列"首页、上10页、下10页、尾
- Sample:http://www.happyshow.org/sample/20060613/nav/nav.html<!DOCTY
- 1.在zend-studio中的项目explorer中右键-》import->选择svn->project from svn-》