有没有办法从图片网址中检索上次修改日期?
我可以在浏览器中看到上次修改日期,我认为最后修改日期在HTTP标题内。
非常感谢。
这是我的代码:
image_file = open('http://www.example.com/image1.jpg')
答案 0 :(得分:3)
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
。
答案 1 :(得分: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
答案 2 :(得分:1)
require 'mechanize'
agent = Mechanize.new
modified_date = agent.get("http://example.com/image1.jpg").response["last-modified"]