16

宝石文件

...
gem 'nokogiri'
...

在控制器中

doc = Nokogiri::HTML(open('http://google.com'))

我得到了一个错误

Errno::ENOENT in SiteController#scrap
No such file or directory - http://google.com
app/controllers/site_controller.rb:6:in `initialize'
app/controllers/site_controller.rb:6:in `open'
app/controllers/site_controller.rb:6:in `scrap'

我尝试删除 Gemfile.lock 并再次执行“捆绑安装”,但这并没有解决我的问题。

导轨 2.3.8

红宝石 1.9.3p194

我究竟做错了什么?在此先感谢您的帮助

4

3 回答 3

38

如果您require 'open-uri'想将 URL 传递给open(). 此外,您需要在打开文件后阅读该文件:

require 'open-uri'
doc = Nokogiri::HTML(open('http://google.com').read)
于 2012-11-15T08:03:17.397 回答
0

在我的情况下(使用 brew 安装 ruby​​),我执行这些步骤来制作open()作品

require 'open-uri'

# to get a TempFile object
URI.open("http://www.google.com")

# to get string of html
URI.open("http://www.google.com").read

我从https://ruby-doc.org/stdlib-2.6.3/libdoc/open-uri/rdoc/OpenURI.html的文档中得到了这个

于 2021-03-26T11:58:45.503 回答
0

我试图将 http 作为模型中的文件访问。

For instance :
web_doc = Nokogiri::HTML(open("https://www.abokifx.com/", :ssl_verify_mode => OpenSSL::SSL::VERIFY_NONE))
ERROR which was thrown 

Errno::ENOENT: No such file or directory @ rb_sysopen - https://www.abokifx.com/
    from (irb):10:in `initialize'
    from (irb):10:in `open'
    from (irb):10

由于 open 无法将 https URL 作为文件读取。OpenURI 是一个易于使用的 Net::HTTP、Net::HTTPS 和 Net::FTP 包装器。可以像打开文件一样打开 http、https 或 ftp URL,因此您需要require 'open-uri'.

在添加require 'open-uri'Nokogiri 时,它能够抓取该网站。

于 2017-08-13T09:56:11.430 回答