How do I download a picture using Ruby?

后端 未结 8 1466
滥情空心
滥情空心 2020-12-02 16:08

I want to download this picture using Ruby. How do I do that?

http://farm1.static.flickr.com/92/218926700_ecedc5fef7_o.jpg

I am using Mac O

相关标签:
8条回答
  • 2020-12-02 16:22

    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.

    0 讨论(0)
  • 2020-12-02 16:24
    
    require "open-uri"
    
    open("your-url") {|f|
       File.open("whatever_file.jpg","wb") do |file|
         file.puts f.read
       end
    }
    
    
    
    0 讨论(0)
  • 2020-12-02 16:24

    Try using the Mechanize gem:

    Start with: sudo gem install mechanize to install Mechanize.

    Then:

    require 'rubygems'
    require 'mechanize'
    
    agent = Mechanize.new
    link = 'http://www.asite.com/pic.jpg'
    agent.get(link).save "images/pic.jpg" 
    

    EDIT: To make things cleaner I would suggest you use the File's name itself when you save the image. I had an issue saving bulk images because they were not formated correctly. The images were saved like this:

    #pic.jpg(1)
    #pic.jpg(2)
    #etc.
    

    Thats why you should probably use the image name as the file name like this:

    agent.get(src).save "images/#{File.basename(url)}"
    

    File.basename takes the image url and just returns the the actual image name:

    File.basename("http://www.asite.com/pic.jpg")
    # returns the image name
    pic.jpg
    
    0 讨论(0)
  • 2020-12-02 16:24
    %x(wget http://farm1.static.flickr.com/92/218926700_ecedc5fef7_o.jpg)
    

    or

    `wget http://farm1.static.flickr.com/92/218926700_ecedc5fef7_o.jpg`
    
    0 讨论(0)
  • 2020-12-02 16:28

    The easiest way would be to require open-uri and use that with the previous answer or use the also supplied Net::HTTP module with its get method.

    0 讨论(0)
  • 2020-12-02 16:34

    The same way you download anything else. Net::HTTP

    0 讨论(0)
提交回复
热议问题