scrapy meta 和 cb_kwargs参数

使用 metacb_kwargs 的区别和场景 

1.传递数据量和复杂度

        meta 更适合传递较多或较复杂的数据,因为它是一个字典,可以在多个回调函数之间共享和修改。

        cb_kwargs 更适合传递少量的简单数据,因为它直接将数据作为函数参数传递,便于访问

2.代码可读性

        使用 cb_kwargs 可以让代码更加简洁和可读,回调函数的参数一目了然。

        使用 meta 需要通过 response.meta 来访问数据,稍显繁琐,但更灵活。

3.  兼容性

        meta 可以与 Scrapy 的其他功能(如中间件和扩展)很好地兼容,因为许多 Scrapy 功能依赖于 meta 字典。

        cb_kwargs 主要用于传递回调函数需要的特定数据,不会与其他功能产生冲突。

import scrapy

class MySpider(scrapy.Spider):
    name = 'my_spider'
    
    def start_requests(self):
        url = 'http://example.com'
        meta_data = {'meta_key': 'meta_value'}
        kwargs_data = {'kwarg_key': 'kwarg_value'}
        yield scrapy.Request(
                url, callback=self.parse, 
                meta=meta_data, 
                cb_kwargs=kwargs_data
               )

    
    def parse(self, response, kwarg_key, **kwargs):
        # 访问meat数据 需要从response获取
        meta_value = response.meta['meta_key']
        print(meta_value)
        
        # 访问cb_kwargs数据 可以直接获取
        print({kwarg_key})
        
        # 也可以这样获取
        kwarg_key = kwargs['kwarg_key']
        print(kwarg_key)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值