ruby版ワンライナーで画像収集
ワンライナーで画像収集 に非常に感銘を受けたのでw
ruby で同じ感じでできないかなーとやってみました.
まず LWP::Simple がすごすぎるので get 関数と mirror 関数をざっくりと作ります.
require "open-uri" def mirror url, path open url do |resource| File.open path, "wb" do |f| f.write resource.read end end end def get url open(url) {|resource| resource.read } end
なんというか open-uri 使ってて明らかに手抜きですいません...
$ ruby -ropen-uri -rlwp_simple -e 'get(ARGV[0]).scan(/<a.*?href="(http:\/\/[^"]+\.jpg)"/) {|refs| mirror(refs[0], File.basename(refs[0])) }' http://metiss.blog92.fc2.com/blog-entry-142.html
普段使いにはこんな感じのスクリプトとして保存しておいて...
#!/usr/bin/env ruby require "lwp_simple" get(ARGV[0]).scan /<a.*?href="(http:\/\/[^"]+\.jpg)"/ do |refs| mirror refs[0], File.basename(refs[0]) end
こんな感じで実行する.
$ dl.rb http://metiss.blog92.fc2.com/blog-entry-142.html
ウハウハできましたかー?w
追記(2009/1/10)
この記事で取り上げた LWP::Simple の ruby 版ライブラリを作りました。よかったら使ってみてください。