【问题标题】:Scrapy error: TypeError: __init__() got an unexpected keyword argument 'cb_kwargs'Scrapy 错误:TypeError:__init__() 得到了一个意外的关键字参数“cb_kwargs”
【发布时间】:2020-11-13 22:35:13
【问题描述】:

我使用 scrapy 来解析网站。 Scrapy 版本 2.1.0 当我尝试提出额外请求时:

taglines_request = Request(url=tagline_url, 
                           callback=self.get_tags_and_awards,
                           cb_kwargs={'item':item, 'awards_url': awards_url})

我收到以下错误:

TypeError: __init__() got an unexpected keyword argument 'cb_kwargs'

但是在__init__()方法中,有一个cb_kwargs参数。请告诉我,可能是什么问题? 我通过 ScrapyD 启动

【问题讨论】:

    标签: scrapy


    【解决方案1】:

    我认为这里的问题是您将 cb_kwargs 传递给 Request 而 Request 又不接受。据我了解,cb_kwargs 是 Scrapy 1.7 版中的新功能,因此您应该再次检查 ScrapyD 在您的情况下是否使用 Scrapy >= 1.7 版本。 或者,要将数据传递给您的回调,您可以使用Request's meta attribute

    taglines_request = Request(
        url=tagline_url, 
        callback=self.get_tags_and_awards,
        meta={
            'item':item, 
            'awards_url': awards_url
        }
    )
    

    然后,您可以通过元访问响应中的数据。

    def get_tags_and_awards(self, response):
        item = response.meta['item']
        awards_url = response.meta['awards_url']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-11
      • 2017-05-10
      • 1970-01-01
      • 2017-10-16
      • 2020-10-22
      • 2021-11-17
      • 2016-11-01
      相关资源
      最近更新 更多