ページ内の画像を一括してダウンロードするRubyスクリプト

ちょっと前に話題になったUser Interface Iconsから、アイコンをZIPでダウンロードしようとしたら、なんか変なソフトをインストールするようにいわれてゲンナリしたので、ひさしぶりにRubyでページ内の画像をすべて取得するスクリプトを書きました。

#! /usr/local/env ruby
require 'open-uri'
require 'cgi'

def main
  url      = 'http://www.userinterfaceicons.com/'
  toppage  = 'preview.php'
  savepath = 'C:\temp\uii_icon\\'
  # get image url list
  image_url_list = []
  open(url + toppage) do |page|
    page.each_line do |line|
    image_url_list << URI.escape(url + $1) if line =~ /(80x80\/.+?\.png)/
  end
end

# get image file
image_url_list.each do |image_url|
  filename = File.basename(image_url)
    open(savepath + filename, 'w') do |output|
      open(image_url) do |data|
        output.write(data.read)
      end
      puts("#{filename} has saved.")
    end
  end
end

main

__END__

なんの見所もありませんが、、こんな捨てプログラムでも、久しぶりに書いたら楽しかったですって話。

コメント

コメント一覧 (1件)

  • Windows版では、ファイルを開くところをバイナリー・モードにしないと、うまく画像ファイルが保存されないようでした。
    具体的には、
     open(savepath + filename, ‘w+b’) do |output|
    です。
    Googleで、「ruby 画像 ダウンロード スクリプト」検索すると、このページがトップに来ていたので、誰かの役にたつことを祈りつつ、ご参考までにコメントしてみました。

通りすがり へ返信する コメントをキャンセル

目次