scrapy回调函数传递参数

scrapy.Request 的callback传参的两种方式

1.使用 lambda方式传递参数

def parse(self, response):
    for sel in response.xpath('//li[@class="clearfix"]/div[@class="list_con"]'):
        item=DmozItem()
        item['href']=sel.xpath('h2/a/@href').extract()[0]
        yield scrapy.Request(item['href'], callback=lambda response, it=item: self.others_parse(response,it),dont_filter=True)
        yield item


def others_parse(self, response, it):
    it['url'] = response.url
    yield it

2.在某些情况下,您可能有兴趣向这些回调函数传递参数,以便稍后在第二个回调中接收参数。您可以使用该Request.meta属性。

def parse(self, response):
    for sel in response.xpath('//li[@class="clearfix"]/div[@class="list_con"]'):
        item=DmozItem()
        item['href']=sel.xpath('h2/a/@href').extract()[0]

        request= scrapy.Request(item['href'], callback=others_parse,dont_filter=True)
        request.meta['item'] = item
        yield request


def others_parse(self, response):
    item = response.meta['item']
    item['other_url'] = response.url
    yield item

https://www.jianshu.com/p/461d74641e80

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏黑泽君的专栏

什么是Hibernate延时加载?

732
来自专栏小樱的经验随笔

【python进阶】深入理解系统进程2

2664
来自专栏GreenLeaves

四、CLR执行程序集中代码和IL代码简介

三、加载公共语言运行时中介绍了在安装了.Net Framework中加载公共语言运行时,公共语言运行时加载程序集的过程.以及通过vs stdio设置源码编译的目...

3008
来自专栏小二的折腾日记

day5(面向对象2)

wait notify notifyAll 都使用在同步中,因为要对持有监视器(锁)的线程操作。所以要使用在同步中,以为只有同步才具有锁。 为什么这些操作线程...

551
来自专栏程序你好

Java中Volatile和Synchronized关键字的区别

在上面,我们定义了三个整数变量:i1、i2和i3。我们定义了三个相应的getter方法:geti1()、geti2()和geti3()。

1952
来自专栏腾讯移动品质中心TMQ的专栏

从Java乱码谈起

在实际项目开发中,特别是涉及到中文输入输出的时候,大家肯定都被各种乱码问题坑过。如果遇到复杂的系统,为了乱码问题折腾几天也不是不可能。

4436
来自专栏Python小屋

Python使用模块中对象的几种方法

Python默认安装仅包含部分基本或核心模块,启动时也仅加载了基本模块,在需要时再显式地加载(有些模块可能需要先安装)其他模块,这样可以减小程序运行的压力,且具...

3696
来自专栏大内老A

ASP.NET Core管道深度剖析(4):管道是如何建立起来的?

在《管道是如何处理HTTP请求的?》中,我们对ASP.NET Core的请求处理管道的构成以及它对请求的处理流程进行了详细介绍,接下来我们需要了解的是这样一个管...

1906
来自专栏编程

Python模块知识8:configparser、压缩模块

一、configparser模块 configparser用于处理特定格式的文件,其本质上是利用open来操作文件。 文件格式如: ? 1.基本的读取配置文件 ...

1876
来自专栏蓝天

SHELL参数介绍

$0 = shell名称或shell脚本名称 $1 = 第一个shell参数 ... $9 = 第九个shell参数 $# = 位置参数的个数 "$*" = "...

804

扫码关注云+社区

领取腾讯云代金券