Ruby模塊OpenURI獲取HTTP/FTP地址內容
Ruby中有一些特殊的模塊是比較有用的。比如在這里為大家介紹的Ruby模塊OpenURI ,就是一種比較常見的Ruby模塊。我們需要熟練的掌握其特性。#t#
Ruby中獲取一個HTTP/FTP地址的內容,有一個非常方便的方法,就是使用open-uri庫。
Ruby模塊OpenURI是ruby的標準附加庫中所帶的,路徑是:lib/oepn-uri.rb
引用了該附加庫后,就可以像打開普通文件那樣打開一個http/ftp的uri的資源。
Ruby模塊OpenURI有區別的地方在這里:
- 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重定向地址。
該函數最后返回的值,是傳入的代碼塊最后的值。 可以這樣獲得Ruby模塊OpenURI的內容
- data = open('http://coderlee.
cnblogs.com'){|f| f.read}- data = open('http://coderlee.
cnblogs.com'){|f| f}.open.read
第二句的open的原因是:open方法返回的流,是已經關閉了的tempfile,所以要先open打開流,返回打開的流,再調用read讀取。