You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Kimurai在Ruby on Rails中爬取数据时遭遇URI::HTTP未初始化错误

解决Kimurai爬虫中uninitialized constant URI::HTTP错误

问题原因

Ruby 3.0及以上版本中,URI库的子模块(如URI::HTTP、URI::HTTPS)不再自动加载,而Kimurai 1.4.0的代码中直接使用URI::HTTP进行URL有效性校验,导致未初始化常量的错误。

解决方案

方案1:显式引入URI::HTTP模块

在爬虫代码开头添加require 'uri/http',确保URI::HTTP常量被加载:

require 'open-uri'
require 'nokogiri'
require 'kimurai'
require 'uri/http' # 添加该行

class WebScrapper < Kimurai::Base
  @name = "web_scrapper_spider"
  @engine = :mechanize
  @start_urls = ["https://metaruby.com/"]
  @config = {
      user_agent: "Chrome/68.0.3440.84"
    }

  def parse(response, url:, data: {})
    blogs = []
    response.xpath("//table[@class='topic-list']//tbody//tr").each do |tr|
      scrapped_data = {
                        title: tr.at('td[1]//span').text,
                        category: tr.at('td[1]//div//span').text,
                        date: tr.at('td[3]').text.strip
                      }
      blogs << scrapped_data
      save_to "results.json", scrapped_data.as_json, format: :json
    end
  end
end

方案2:升级Kimurai到兼容Ruby 3.x的版本

Kimurai 1.4.0对Ruby 3.1的支持不足,升级到最新版本(如2.x系列)可解决兼容性问题:

  1. 修改Gemfile中的依赖:
gem 'kimurai', '~> 2.0'
  1. 执行bundle更新:
bundle update kimurai

验证

修改后重新运行爬虫,URI::HTTP未初始化的错误会消失,爬虫可正常发起请求并解析页面。

内容的提问来源于stack exchange,提问作者Nikita Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 22:55:17