首页 > 解决方案 > kimurai gem - 适用于开发,而不是生产 - 错误:参数数量错误(给定 2,预期 1;必需关键字:url)

问题描述

该代码在我的本地计算机(开发)上运行良好,但在生产中,当我尝试运行 de scrape 方法时,它会引发错误:错误:参数数量错误(给定 2,预期 1;所需关键字:url)。KimuraiGem 生产时有什么特殊配置吗?使用 rbenv Ruby -v 3.0.1 Rails -v 6.1.4.1 Unicorn 和 nginx

致命 -- milenios_spider: Spider: 停止: {:spider_name=>"milenios_spider", :status=>:failed, :error=>"#<ArgumentError: 参数数量错误(给定 2,预期 1;必需关键字:url) >", :environment=>"开发", :start_time=>23:14:29.30478516 +0000, :stop_time=>2021-10-31 23:14:33.352345259 +0000, :running_time=>" 4s", :visits=>{:requests=>1, :responses=>1}, :items=>{:sent=>0, :processed=>0}, :events=>{:requests_errors=>{} , :drop_items_errors=>{}, :custom=>{}}}

在我的控制器中:

  def scrape
      url = "https://www..some page...com"
      response = MileniosSpider.process(url)
      if response[:status] == :completed && response[:error].nil?
        flash.now[:notice] = "Successfully scraped url"
      else
        flash.now[:alert] = response[:error]
      end
    rescue StandardError => e
      flash.now[:alert] = "Error: #{e}"
  end

模型:

  class MileniosSpider < Kimurai::Base
    @name = 'milenios_spider'
    @engine = :mechanize
    @config = {
      restart_if: { memory_limit: 350_000 },
      before_request: { delay: 1..2 }
    }

    def self.process(url)
      @start_urls = [url]
      self.crawl!
    end

   
    def parse(response, url:, data: {}) 
       .........some code .....
    end

  end

标签: web-scrapingkimurai

解决方案


您在开发中使用什么版本的 ruby​​?我认为 Kimurai 还不支持 Ruby 3.x,这是您在生产中使用的。您可以降级项目的 Ruby 版本或尝试通过命令行使用不同版本的 Ruby 运行 Kimurai。

https://github.com/vifreefly/kimuraframework/issues/58


推荐阅读