2012-11-15 41 views
9

的Gemfile軌引入nokogiri沒有這樣的文件或目錄

... 
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

我在做什麼錯?在此先感謝您的幫助

回答

27

如果要將URL傳遞到open(),則需要require 'open-uri'。此外,您需要在打開文件後讀取該文件:

require 'open-uri' 
doc = Nokogiri::HTML(open('http://google.com').read) 
+0

非常感謝! – Tom

+5

我不認爲你需要閱讀該文件,但它沒有它的作品。 – Robin

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能夠刮掉網站。

相關問題