Rubyで画像収集を行う【3】検索結果の取得
目次
1:検索条件の入力
2:検索結果の取得
3:画像の取得と保存 ←いまここ
つづく
前回のおさらい
【2】検索結果の取得 では、画像の元URLを配列で取得した。
今回はそれらをもとに、実際に画像を保存する
早速始めよう
def save_image(url)
#その日の名前でディレクトリを作成
dn = DateTime.now
dt = dn.year.to_s + dn.mon.to_s + dn.day.to_s + "\\"
#僕はカレントディレクトリにあるimgフォルダのの中に格納している
dirName = "\img\\" + dt
#同名のものが既にない場合のみディレクトリを作成
FileUtils.mkdir_p(dirName) unless FileTest.exist?(dirName)
#前回取得したurlにあるファイル名を取得
fileName = File.basename(url)
filePath = dirName + fileName
#?などを含む名前はファイルにつけられないので変更
if fileName.include?('?')
dn = DateTime.now
fileName='img' + dn.hour.to_s + 'h' + dn.min.to_s + 'm' + dn.sec.to_s + 's' + '.jpg'
end
#同名のファイルがある場合は変更
if File.exist?(filePath)
dn = DateTime.now
fileName='img' + dn.hour.to_s + 'h' + dn.min.to_s + 'm' + dn.sec.to_s + 's' + '.jpg'
end
#改めて最終的なファイルパスを設定
filePath = dirName + fileName
#ファイルパスを出力
p filePath
# 指定したパス(自分のディレクトリ)を開いて
open(filePath, 'wb') do |output|
#urlを開いて書き込み(保存)
open(url) do |data|
output.write(data.read)
end
end
end
コメント
def save_image(url)
#その日の名前でディレクトリを作成
dn = DateTime.now
dt = dn.year.to_s + dn.mon.to_s + dn.day.to_s + "\\"
#僕はカレントディレクトリにあるimgフォルダのの中に格納している
dirName = "\img\\" + dt
#同名のものが既にない場合のみディレクトリを作成
FileUtils.mkdir_p(dirName) unless FileTest.exist?(dirName)
#前回取得したurlにあるファイル名を取得
fileName = File.basename(url)
filePath = dirName + fileName
#?などを含む名前はファイルにつけられないので変更
if fileName.include?('?')
dn = DateTime.now
fileName='img' + dn.hour.to_s + 'h' + dn.min.to_s + 'm' + dn.sec.to_s + 's' + '.jpg'
end
#同名のファイルがある場合は変更
if File.exist?(filePath)
dn = DateTime.now
fileName='img' + dn.hour.to_s + 'h' + dn.min.to_s + 'm' + dn.sec.to_s + 's' + '.jpg'
end
#改めて最終的なファイルパスを設定
filePath = dirName + fileName
#ファイルパスを出力
p filePath
# 指定したパス(自分のディレクトリ)を開いて
open(filePath, 'wb') do |output|
#urlを開いて書き込み(保存)
open(url) do |data|
output.write(data.read)
end
end
end
save_image関数で画像を保存する部分を書きました。
が、見てわかるように保存する部分は最後のとこだけで、
それ意外の前半部分はディレクトリの確認や
ファイル名に問題がないようにしています
一応補足ですが、この関数は各画像URLに対して1回呼ばれるので、
このプログラム内での変数urlは配列ではなく1つです。
Author And Source
この問題について(Rubyで画像収集を行う【3】検索結果の取得), 我々は、より多くの情報をここで見つけました https://qiita.com/EigenPort_M/items/2237c58b01e40e0a261a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .