wgetというと今までtar玉のダウンロードとdynamicDNSの更新用アクセス位にしか
使ってなかったのですが、実はかなり高機能でもっと使い道があるという事で少しだけまとめておきます。
特に優秀な機能が再帰取得で、あるページを指定した時に、そのページに含まれているリンク先も再帰的に取得できます。
# http://sports.yahoo.co.jpを再帰ダウンロード % wget -r http://sports.yahoo.co.jp
これでhttp://sports.yahoo.co.jpからたどれる同一ドメイン上のすべてのファイルを取得できますが、大抵の場合、全部は必要ないので再帰回数を指定できます。オプションは-lに回数を続けます。
# 再帰回数1回を指定 % wget -r -l 1 http://sports.yahoo.co.jp
またダウンロードしたいファイルの拡張子を限定する事も出来ますし、
ダウンロードしたくないファイルの拡張子を指定する事も出来ます。
# ダウンロードするのはjpgファイルのみ % wget -r -l 1 -Ajpg http://sports.yahoo.co.jp # 複数指定する場合はカンマ区切り % wget -r -l 1 -Ajpg,gif http://sports.yahoo.co.jp # jpgファイルはダウンロードしない % wget -r -l 1 -Rjpg http://sports.yahoo.co.jp
さらに画像サーバ等が別のドメインに用意されている事は珍しくありませんので、
別のドメインも取得先に加えましょう。この時に元々指定するURLのドメインも
-Dオプションに追加する必要がありますので注意して下さい。
# sports.yahoo.co.jpに加えて、yimg.jpドメインからもダウンロードを行う % wget -r -l 1 -Ajpg -H -Dyimg.jp,sports.yahoo.co.jp http://sports.yahoo.co.jp
以上で特定のサイトから再帰的に、必要なファイルだけダウンロードする事が出来るようになりました。ただし、再帰的にデータをダウンロードするというのはWebサーバに大きな負荷をかけます。迷惑にならないように連続アクセス時のインターバルを設定しましょう。
# アクセス毎に1秒間ウエイトをかける % wget -r -l 1 -Ajpg -H -Dyimg.jp,sports.yahoo.co.jp -w 1 http://sports.yahoo.co.jp
中学生の頃、エッチな画像を自動で収集するプログラムを作ったのですが、
そんな物は必要なくて、wgetを使えば一発です。クローラとして十分実用レベルです。
という訳で、下手にクローラを作るよりも優秀なwgetをもっと活用していきまっしょい。
その他
-
proxy経由でアクセス
% wget -e http_proxy=(proxy_host) http://sports.yahoo.co.jp
-
robots.txtを無視
% wget -e robots=off http://sports.yahoo.co.jp
-
ダウンロードディレクトリを指定
% wget -P targetdir http://sports.yahoo.co.jp
googleったらヒットしました。
こういう記録残してるんだね。
がんばれー!