2012-11-15 8 views
9

Gemfileレール鋸山コントローラ</p> <pre><code>doc = Nokogiri::HTML(open('http://google.com')) </code></pre> <p>でそのようなファイルやディレクトリ

... 
gem 'nokogiri' 
... 

いいえ、私がGemfile.lockを削除してください「バンドルをインストールしようとしたエラー

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' 

を得ました"再び、しかしそれは私の問題を解決していない。

レール2.3.8

ルビー1.9.3p194

私が間違って何をしているのですか?事前にお手数をおかけします。

答えて

27

open()にURLを渡す場合は、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'にする必要があります。

追加時に Nokogiriはウェブサイトを擦ることができました。

関連する問題