scrapy回调函数传递参数

在运用scrapy框架进行爬虫时,可能需要将附加数据传递给回调函数,下面将介绍两种向回调函数传递参数的方法。

1.使用 lambda方式传递参数

请求的回调是在下载该请求的响应时将被调用的函数。将使用下载的Response对象作为其第一个参数调用回调函数。

    def parse(self, response):
         a_tag_list = response.css('.list .listtitletxt')
         for element in a_tag_list:
            item = LuboavItem()
            item['title'] = element.css('a::attr("title")').extract()[0]
            item['img_url'] = self.main_url + element.css('a::attr("href")').extract()[0]
            yield scrapy.Request(item['img_url'], callback=lambda response, it=item: self.others_parse(response, it),
                                 dont_filter=True)
            yield item

    def others_parse(self,response,it):
        it['image'] = response.xpath('//p//img/@src').extract()
        yield it


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

def parse_page1(self, response):
    item = MyItem()
    item['main_url'] = response.url
    request = scrapy.Request("http://www.example.com/some_page.html",
                             callback=self.parse_page2)
    request.meta['item'] = item
    yield request

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

文章参考:

https://doc.scrapy.org/en/1.5/topics/request-response.html#passing-additional-data-to-callback-functions

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值