Ruby的OpenURI模組

來源:互聯網
上載者:User
Ruby中擷取一個HTTP/FTP地址的內容,有一個非常方便的方法,就是使用open-uri庫。

open-uri庫是ruby的標準附加庫中所帶的,路徑是:lib/oepn-uri.rb

引用了該附加庫後,就可以像開啟普通檔案那樣開啟一個http/ftp的uri的資源。

有區別的地方在這裡:require 'open-uri'

open('c:/boot.ini'){|file|
  puts file.class  #File
}

open('http://coderlee.cnblogs.com'){|file|
  puts file.class #Tempfile
}

可以看出,開啟一個本機檔案的塊參數是File類型,而開啟一個uri的塊參數是一個Tempfile類型。

還有一點要注意,就是open-uri裡面的open方法會自動對302 redirection重新導向地址進行追蹤訪問,而Net::HTTP#get方法則不會自動追蹤302重新導向地址。

該函數最後返回的值,是傳入的代碼塊最後的值。 可以這樣獲得uri的內容data = open('http://coderlee.cnblogs.com'){|f| f.read}

data = open('http://coderlee.cnblogs.com'){|f| f}.open.read

第二句的open的原因是:open方法返回的流,是已經關閉了的tempfile,所以要先open開啟流,返回開啟的流,再調用read讀取。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.