wget - HTTP、FTPダウンローダ
Table of Contents |
wget は non-interactive な HTTP, FTP ダウンローダです。 再帰的取得、ファイル名のワイルドカード指定、レジューム機能など、便利な機能があります。
% wget http://www.u-aizu.ac.jp/index.html % wget ftp:/ftp.u-aizu.ac.jp/ls-lR.Z
また、
% wget -r [url]
とすると、再帰的にファイルを取得します。この場合、カレントディレクトリに
[domain]/ [domain]/[dir]/ [domain]/[dir]/[dir]
のようにディレクトリが自動的に作成されます。
オプション 
以下、オプション一部
-nv (--non-verbose) | 作業状況を知らせる出力の一部を OFF にする。 |
-nc (--no-clobber) | 既にローカルにダウンロード済のファイルは取得しない。デフォルトでは .1 のような suffix がつけられ新たにダウンロードされる。 -N オプションと同時には指定できない。-r オプション時は元々 -nc |
-N (--timestamping) | タイムスタンプを比較し、ファイルが変更されたと判断されたなら上書きダウンロードを行う。ただし、対象ファイルが Last-Modified ヘッダもたない場合(CGIなどやサーバーが自動で生成するディレクトリリストなど)、とりあえず上書きダウンロードする。 |
-c (--continue) | ファイルの続きからダウンロードする。レジューム機能。 |
--restrict-file-names= [unix,windows,nocontrol] | windows の場合は : (ポート番号指定に使われる)を + に、? (CGIの引数等に使われる) を @ に変換するなど、windows 上でファイル名に含むことのできない文字を変換する。unix の場合も目的は同等。基本的にはデフォルトで自動判別される。重要なのは nocontrol で、これは日本語ファイル名などURLエスケープされてアクセスされる文字列を元に戻し、それをローカル保存時のファイル名とする。windows,nocontrol のように指定することも可能。しかし、全角の半分だけが変換対象とマッチしてしまいおかしなファイル名になるときも。 |
--tries=[num] | リトライの回数。無限は inf または 0 |
Recursive Options
-r (--recursive) | 再帰的にダウンロードする。-l や -np も指定した方がよい。 |
-l [depth] (--level=[depth]) | 再帰的にリンクをたどる数を指定する。-l 10 や --level=10 のように指定する。デフォルトは 5。無限は inf または 0 |
-L (--relative) | 絶対リンク (http:// からはじまるリンク) はたどらず、相対リンクのみを再帰的にたどる。ひとつのホームページだけをまるごとダウンロードするのに便利。 |
-A (--accept) | 取得する拡張子のリスト。-A '.ps,.pdf'。-A '*a*.html,jpg' |
-R (--reject) | 取得しない拡張子のリスト |
-np (--no-parent) | 再帰的ダウンロードにおいて、親ディレクトリをたどらない |
-P (--directory-prefix) | ファイル保存ディレクトリの指定 |
--no-host-directories | 再帰的ダウンロードにおいてデフォルトではホスト名のフォルダが作られるが、それを作らない |
小技 
設定ファイルにしかない機能を設定ファイルを作成せずに使用するには
% wget -e robots=off [url]
のように -e オプションを使用します。
注意事項。
% wget -r -c -N --relative --level=inf --no-parent --restrict-file-names=nocontrol http://www.u-aizu.ac.jp
のようにホームページを丸ごとダウンロードしようとしたとします。 一度止めても後でダウンロードの続きを再開させられるように -c レジュームオプションを指定し、 止めている間に管理者がページを更新した場合にそれに対応する意図として -N オプションを指定しています。しかし、これは意図通りにいきません。 オプション -c を指定した場合に解析される html ファイルはローカルに保存された html ファイルであり、ダウンロード済みのファイルがウェブサイトで更新されていても、そのファイルを見ようとしません。むしろ -N オプションを指定して更新されたファイルをダウンロードしようとすることで、Aborted とエラーが出て止まります。
% wget -r -c --relative --level=inf --no-parent --restrict-file-names=nocontrol http://www.u-aizu.ac.jp
としてダウンロード後、
% wget -N -P www.u-aizu.ac.jp/ http://www.u-aizu.ac.jp/update.html
のようにそのファイルを更新し、改めて
% wget -r -c --relative --level=inf --no-parent --restrict-file-names=nocontrol http://www.u-aizu.ac.jp
とすれば新しい update.html を解析させることはできるそうですが、微妙なところです。(wget-1.10.2)
参考 
他は Web 巡回 や GNU Wget Manual
を見るといいでしょう。
また、.wgetrc という設定ファイルを作っておくこともできるので、詳しくは
GNU Wget: WGET-E.TXT (J)
のページをみておくとよいでしょう。