【问题标题】:Rails won't read a link with nokogiri and open-uriRails 不会读取带有 nokogiri 和 open-uri 的链接
【发布时间】:2018-02-12 22:13:36
【问题描述】:

我有一个控制器,它获取一个作为参数传递的 url,我试图在该 url 处抓取整个页面。但是当我尝试读取 url 时出现以下错误:No such file or directory @ rb_sysopen - www.google.com

控制器:

lass PageScraperController < ApplicationController
    require 'nokogiri'
    require 'open-uri'
    require 'diffy'
    require 'htmlentities'

    def scrape
    require 'open-uri'
        @url = watched_link_params.to_s
        @url = @url.slice(9..@url.length-3)
        puts "LOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOG#{@url}"

        page = Nokogiri::HTML(open(@url))
        # coder = HTMLEntities.new
        # encodedHTML = coder.encode(page)
        puts page

     end

    def watched_link_params

        params.require(:default).permit(:url)

    end

end

【问题讨论】:

  • 我想你想要@url = watched_link_params[:url]。然后,您可以避免将哈希转换为字符串然后切出您想要的部分而造成的混乱。

标签: ruby-on-rails ruby ruby-on-rails-5 nokogiri open-uri


【解决方案1】:

试试这个:

def scrape
  @url = watched_link_params[:url]

  page = Nokogiri::HTML(open(@url))
  puts page
end

您需要传入整个 url,包括协议指示符;也就是说,你需要使用http://www.google.com而不是www.google.com

>> params = ActionController::Parameters.new(default: {url: 'http://www.google.com'})
>> watched_link_params = params.require(:default).permit(:url)
>> @url = watched_link_params[:url]
"http://www.google.com"
>> page = Nokogiri::HTML(open(@url))

【讨论】:

  • 谢谢你,解决了它,我也删除了切片的混乱。
猜你喜欢
  • 2011-02-04
  • 2012-11-27
  • 1970-01-01
  • 1970-01-01
  • 2019-10-01
  • 2013-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多