我想用Ruby下载这张图片。我该怎么做?
http://farm1.static.flickr.com/92/218926700_ecedc5fef7_o.jpg
我正在使用Mac OS。
答案 0 :(得分:54)
require "open-uri"
open("your-url") {|f|
File.open("whatever_file.jpg","wb") do |file|
file.puts f.read
end
}
答案 1 :(得分:16)
尝试使用Mechanize gem:
从:sudo gem install mechanize
开始安装Mechanize。
然后:
require 'rubygems'
require 'mechanize'
agent = Mechanize.new
link = 'http://www.asite.com/pic.jpg'
agent.get(link).save "images/pic.jpg"
编辑: 为了使事情更清洁,我建议您在保存图像时使用文件名称。我在保存批量图像时遇到了问题,因为它们没有正确格式化。图像保存如下:
#pic.jpg(1)
#pic.jpg(2)
#etc.
这就是为什么你应该使用图像名称作为文件名,如下所示:
agent.get(src).save "images/#{File.basename(url)}"
File.basename获取图片网址,只返回实际图片名称:
File.basename("http://www.asite.com/pic.jpg")
# returns the image name
pic.jpg
答案 2 :(得分:2)
如果您想在一个页面上下载所有图像,可以使用image_downloader gem:
require 'rubygems'
require 'image_downloader'
downloader = ImageDownloader::Process.new('www.test.com','img_dir/')
downloader.parse(:any_looks_like_image => true)
downloader.download()
答案 3 :(得分:0)
%x(wget http://farm1.static.flickr.com/92/218926700_ecedc5fef7_o.jpg)
或
`wget http://farm1.static.flickr.com/92/218926700_ecedc5fef7_o.jpg`
答案 4 :(得分:0)
最简单的方法是要求open-uri
并将其与前一个答案一起使用,或者使用也提供的Net :: HTTP模块及其get方法。
答案 5 :(得分:0)
为了使事情更清洁,我建议您在保存图像时使用文件名称。我在保存批量图像时遇到了问题,因为它们没有正确格式化。图像保存如下:
#pic.jpg(1)
#pic.jpg(2)
#etc.
这就是为什么你应该使用图像名称作为文件名,如下所示:
src = 'http://www.asite.com/pic.jpg'
agent.get(src).save "#{folder}/#{File.basename(src)}"
File.basename获取图片网址,只返回实际图片名称:
File.basename("http://www.asite.com/pic.jpg")
# returns the image name
pic.jpg
答案 6 :(得分:0)
There is a gem called down
which is simple to use.
Firstly, install this gem by gem install down
.
Then:
require "down"
file = Down.download("http://farm1.static.flickr.com/92/218926700_ecedc5fef7_o.jpg")
You can read more on this gem in its github repo https://github.com/janko-m/down.
答案 7 :(得分:-4)
与下载其他内容的方式相同。 Net::HTTP