16

Gemfile

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

モデル内のファイルとして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は、httpsURLをファイルとして読み取ることができません。OpenURIは、Net :: HTTP、Net :: HTTPS、およびNet::FTPの使いやすいラッパーです。http、https、またはftpのURLをファイルのように開くことができるため、を行う必要がありますrequire 'open-uri'

のこぎりを追加するrequire 'open-uri'と、ウェブサイトをこすり落とすことができました。

于 2017-08-13T09:56:11.430 に答える
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 に答える