2013年8月20日火曜日

wgetとcurl

ウェブページはウェブブラウザで見るのが一般的ですが、
あることがわかっているファイルをダウンロードしたいだけなら
コマンドラインのツールを利用したほうが楽です。
特に大量のファイルをダウンロードする場合にはめんどくさくなくていいです。
そんなダウンロードツールの有名どころはwgetとcurlです。
個人的にはwgetを使うことが多いのですが、
curlにはwgetにない機能があったりして、適材適所で使い分けています。

curlが便利なのはデジカメで撮影したファイルをウェブサーバにおいているような場合です。
この手の画像ファイルには数字で連番が打ってあり、
例えば"ABC000.jpg","ABC001.jpg","ABC002.jpg",...,"ABC999.jpg"を
まとめてダウンロードしたければ以下を実行します。
$ curl -O http://<ウェブサーバ>/<ディレクトリ>/ABC[0-9][0-9][0-9].jpg
つまり正規表現が使えるのです。
どこまでの正規表現が使えるのか詳しいことは知りませんが、
[a-z]はもちろん、[0-99]("0"から"99"まで)とか[0-99:10]("0"から"99"まで10刻み)とか
{Jan,Feb,Mar}なんてのも使えるみたいです。
なお、先の事例でもしそのファイルが存在しなければ、
中身がエラーページ(404など)のjpegファイルができてしまうので、
あとで選別する必要があることを付け加えておきます。

同様の状況でwgetが便利なのは、たくさんの画像のサムネイルを並べて
各高画質ファイルへのリンクを貼っているようなページがある場合です。
例えば以下を実行します。
$ wget -r -A jpg -l 3  http://<ウェブサーバ>/<ディレクトリ>/<サムネイル表示HTMLファイル>
これにより、wgetは"サムネイル表示HTMLファイル"にあるリンク(Aタグ)を探して自動的にたどり、
3階層(クリック3回)以内にある拡張子"jpg"のファイルすべてをダウンロードしてくれます。
ディレクトリ構成も復元できるので後で必要なファイルを抜き出せばいいですし、
逆に"-m"オプションを使えばミラーサイトを作るように構造ごとダウンロードできます。

wgetにしてもcurlにしてももっと詳しいことが知りたければ"--help"オプションをつけて実行すれば
いろいろ情報が出てきます。ぜひ活用ください。

0 件のコメント:

コメントを投稿