2013-10-16 70 views

回答

2
require 'open-uri' 
require 'prettyprint' 

open('http://www.iana.org/_img/2013.1/iana-logo-header.svg') do |f| 
    pp f.meta 
end 

運行這一點,你會得到這樣的:

{"server"=>"Apache", 
"last-modified"=>"Fri, 04 Jan 2013 01:17:14 GMT", 
"content-type"=>"image/svg+xml", 
"content-length"=>"32870", 
"accept-ranges"=>"bytes", 
"date"=>"Wed, 16 Oct 2013 03:59:41 GMT", 
"x-varnish"=>"2012021384 2012020567", 
"age"=>"70", 
"via"=>"1.1 varnish", 
"connection"=>"keep-alive"} 

運行類似於:

require 'open-uri' 

last_modified = open('http://www.iana.org/_img/2013.1/iana-logo-header.svg') do |f| 
    f.last_modified 
end 
last_modified # => 2013-01-03 18:17:14 -0700 

你就完成了。

OpenURI's open接受一個塊。在該塊內部,您可以訪問將返回有關當前連接信息的不同方法。

從文檔:

open("http://www.ruby-lang.org/en") {|f| 
    f.each_line {|line| p line} 
    p f.base_uri   # <URI::HTTP:0x40e6ef2 URL:http://www.ruby-lang.org/en/> 
    p f.content_type  # "text/html" 
    p f.charset   # "iso-8859-1" 
    p f.content_encoding # [] 
    p f.last_modified # Thu Dec 05 02:45:02 UTC 2002 
}  

另請參見附加信息的OpenURI::Meta文件,如last_modified

2

沒錯,別再懷疑...不能使用open-uri雖然。

require 'net/http' 

http = Net::HTTP.new('www.example.com', 80) 
resp = http.request_get('/image1.jpg') 
date = resp['last-modified'] 

如果要讀取的文件,以及,你可以做一個塊...

http.request_get('/index.html') do |resp| 
    resp.read_body do |str| 
    # ... 
    end 
end 
+0

是的,這可從OpenURI獲得。請參閱文檔中的['last_modified'](http://www.ruby-doc.org/stdlib-2.0.0/libdoc/open-uri/rdoc/OpenURI/Meta.html#method-i-last_modified)。 –

+0

不錯,從來沒有注意到。 –

1
require 'mechanize' 

agent = Mechanize.new 

modified_date = agent.get("http://example.com/image1.jpg").response["last-modified"] 
相關問題