【问题标题】:Scrapy TypeError errback_httpbin() missing 1 required positional argument: 'failure'Scrapy TypeError errback_httpbin() 缺少 1 个必需的位置参数:“失败”
【发布时间】:2020-05-08 07:25:37
【问题描述】:

我正在尝试将我的错误函数分离到一个新的 python 文件中,以便我也可以在其他 scrapers 中调用该文件。但它给出了这个错误:

TypeError: errback_httpbin() 缺少 1 个必需的位置参数:'failure'

我需要调用的类 Common_contents :

class Common_contents(scrapy.Spider):


     def errback_httpbin(self, failure):

我在上面调用这个类的主类:

    def start_requests(self):
            
            yield scrapy.Request(self.start_urls[0], callback=self.parse,
            errback=Common_contents.errback_httpbin,dont_filter=True)

帮我解决问题

提前致谢

【问题讨论】:

    标签: python scrapy request web-crawler


    【解决方案1】:

    你应该像这样重写你的 start_requests(使用 self 而不是类):

    def start_requests(self):
        yield scrapy.Request(self.start_urls[0], callback=self.parse,
                errback=self.errback_httpbin,dont_filter=True)
    

    【讨论】:

      【解决方案2】:

      如果您只需要写一次errback_httpbin 来调用多个蜘蛛 - 您可以使用mixin (special kind of multiple inheritance)
      在您的情况下,实现将如下所示:

      class Common_contents:
      ....
           def errback_httpbin(self, failure):
           ## code
      

      ...

      from *** import Common_contents
      ...
          class YourSpider(scrapy.Spider, Common_contents):
          ....
              def start_requests(self):
                  yield scrapy.Request(self.start_urls[0], callback=self.parse,
                      errback=self.errback_httpbin,dont_filter=True)
      

      在这种情况下,Common_contents 中的errback_httpbin 将可用于定义为class SpiderName(scrapy.Spider, Common_contents) 的每个蜘蛛类

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-06
        • 2019-06-25
        • 2013-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多