2012-11-15 8 views
9

Gemfileray nokogiri không có tập tin hoặc thư mục

... 
gem 'nokogiri' 
... 

Trong điều khiển

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

Và tôi nhận được một lỗi

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' 

tôi đã cố gắng xóa Gemfile.lock và làm "bó cài đặt "một lần nữa, nhưng nó không giải quyết được vấn đề của tôi.

ray 2.3.8

ruby ​​1.9.3p194

Tôi đang làm gì sai? Cảm ơn trước sự giúp đỡ của bạn

Trả lời

27

Bạn cần phải require 'open-uri' nếu bạn muốn chuyển URL đến open(). Ngoài ra, bạn cần phải đọc tệp sau khi mở tệp:

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

Cảm ơn bạn rất nhiều! – Tom

+5

Tôi không nghĩ rằng bạn cần phải đọc các tập tin mặc dù, nó hoạt động mà không có nó cho tôi. – Robin

0

Tôi đang cố truy cập http dưới dạng tệp trong mô hình.

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 

Khi mở không thể đọc URL https dưới dạng tệp. OpenURI là một trình bao bọc dễ sử dụng cho Net :: HTTP, Net :: HTTPS và Net :: FTP. Có thể mở URL http, https hoặc ftp như thể nó là một tệp, vì vậy bạn cần phải require 'open-uri'.

Khi thêm require 'open-uri' Nokogiri có thể xóa trang web.