Voglio scaricare questa immagine usando Ruby. Come lo faccio?Come posso scaricare un'immagine usando Ruby?
http://farm1.static.flickr.com/92/218926700_ecedc5fef7_o.jpg
Sto usando Mac OS.
Voglio scaricare questa immagine usando Ruby. Come lo faccio?Come posso scaricare un'immagine usando Ruby?
http://farm1.static.flickr.com/92/218926700_ecedc5fef7_o.jpg
Sto usando Mac OS.
require "open-uri"
open("your-url") {|f|
File.open("whatever_file.jpg","wb") do |file|
file.puts f.read
end
}
Allo stesso modo in cui si scarica qualcos'altro. Net::HTTP
%x(wget http://farm1.static.flickr.com/92/218926700_ecedc5fef7_o.jpg)
o
`wget http://farm1.static.flickr.com/92/218926700_ecedc5fef7_o.jpg`
non è portatile. – Geo
forse. Ma ha chiesto qualcosa che avrebbe funzionato su Mac. –
Questo non funziona su macOS. A meno che non si installi in modo specifico 'wget'. Se tu avessi suggerito "arricciatura" (che per impostazione predefinita), sarebbe stato più accettabile. – user137369
Il modo più semplice sarebbe quella di richiedere open-uri
e l'uso che la risposta precedente o utilizzare il modulo fornito anche Net :: HTTP con il suo metodo get.
Se volete scaricare tutte le immagini in una pagina, è possibile utilizzare la gemma 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()
Provare a usare la gemma Mechanize:
Inizia con: sudo gem install mechanize
per installare Mechanize.
Poi:
require 'rubygems'
require 'mechanize'
agent = Mechanize.new
link = 'http://www.asite.com/pic.jpg'
agent.get(link).save "images/pic.jpg"
EDIT: Per rendere le cose più pulito vorrei suggerire di usare il nome del file stesso quando si salva l'immagine. Ho riscontrato un problema nel salvataggio di immagini collettive perché non erano formattate correttamente. Le immagini sono state salvate in questo modo:
#pic.jpg(1)
#pic.jpg(2)
#etc.
Ecco perché probabilmente si dovrebbe utilizzare il nome dell'immagine come il nome del file in questo modo:
agent.get(src).save "images/#{File.basename(url)}"
File.basename prende l'URL dell'immagine e restituisce solo il reale nome dell'immagine:
File.basename("http://www.asite.com/pic.jpg")
# returns the image name
pic.jpg
Per rendere le cose più pulite, suggerisco di utilizzare il nome del file stesso quando si salva l'immagine. Ho riscontrato un problema nel salvataggio di immagini collettive perché non erano formattate correttamente. Le immagini sono state salvate in questo modo:
#pic.jpg(1)
#pic.jpg(2)
#etc.
Ecco perché probabilmente si dovrebbe utilizzare il nome dell'immagine come il nome del file in questo modo:
src = 'http://www.asite.com/pic.jpg'
agent.get(src).save "#{folder}/#{File.basename(src)}"
File.basename prende l'URL dell'immagine e restituisce solo il reale nome dell'immagine:
File.basename("http://www.asite.com/pic.jpg")
# returns the image name
pic.jpg
Il sistema operativo non è importante. – waqas