Я хочу загрузить эту фотографию с помощью Ruby. Как это сделать?
http://farm1.static.flickr.com/92/218926700_ecedc5fef7_o.jpg
Я использую Mac OS.
Я хочу загрузить эту фотографию с помощью Ruby. Как это сделать?
http://farm1.static.flickr.com/92/218926700_ecedc5fef7_o.jpg
Я использую Mac OS.
require "open-uri"
open("your-url") {|f|
File.open("whatever_file.jpg","wb") do |file|
file.puts f.read
end
}
Попробуйте использовать драгоценный камень Mechanize:
Начните с: 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"
EDIT: Чтобы сделать вещи чище, я предлагаю вам использовать имя файла, когда вы сохраняете изображение. У меня была проблема с сохранением объемных изображений, потому что они не были правильно сформированы. Изображения были сохранены следующим образом:
#pic.jpg(1)
#pic.jpg(2)
#etc.
Вот почему вы, вероятно, должны использовать имя изображения в качестве имени файла следующим образом:
agent.get(src).save "images/#{File.basename(url)}"
File.basename принимает URL-адрес изображения и просто возвращает фактическое имя изображения:
File.basename("http://www.asite.com/pic.jpg")
# returns the image name
pic.jpg
Если вы хотите загрузить все изображения на одной странице, вы можете использовать драгоценный камень image_downloader:
require 'rubygems'
require 'image_downloader'
downloader = ImageDownloader::Process.new('www.test.com','img_dir/')
downloader.parse(:any_looks_like_image => true)
downloader.download()
%x(wget http://farm1.static.flickr.com/92/218926700_ecedc5fef7_o.jpg)
или
`wget http://farm1.static.flickr.com/92/218926700_ecedc5fef7_o.jpg`
Самый простой способ - потребовать open-uri
и использовать его с предыдущим ответом или использовать также предоставленный Net:: HTTP-модуль с его методом get.
Чтобы сделать вещи более чистыми, я предлагаю вам использовать имя файла при сохранении изображения. У меня была проблема с сохранением объемных изображений, потому что они не были правильно сформированы. Изображения были сохранены следующим образом:
#pic.jpg(1)
#pic.jpg(2)
#etc.
Вот почему вы, вероятно, должны использовать имя изображения в качестве имени файла следующим образом:
src = 'http://www.asite.com/pic.jpg'
agent.get(src).save "#{folder}/#{File.basename(src)}"
File.basename принимает URL-адрес изображения и просто возвращает фактическое имя изображения:
File.basename("http://www.asite.com/pic.jpg")
# returns the image name
pic.jpg
Существует драгоценный камень, называемый down
который прост в использовании.
Во-первых, установите этот драгоценный камень с помощью gem install down
.
Затем:
require "down"
file = Down.download("http://farm1.static.flickr.com/92/218926700_ecedc5fef7_o.jpg")
Вы можете прочитать больше об этом драгоценном камне в его репозитории на github https://github.com/janko-m/down.
Точно так же вы загружаете что-нибудь еще. Net:: HTTP