ブラウザ等でwebページをダウンロードすることもできますが、wgetコマンドではwebページをもう少し複雑な条件でダウンロードを行うことができます。
また、wgetコマンドを利用して、一定の周期でwebページをダウンロードを行うことができれば、簡単なクローラーのようなことができます。
目次
基本的なダウンロード
コマンド例
1 |
wget http://linuxcommand.net/ |
ダウンロード結果
1 2 |
. └── index.html |
オフライン環境での表示結果

対象のwebページをローカルに保存(対象のドメインのページのみ)
コマンド例
1 |
wget -p -E -k http://linuxcommand.net/ |
ダウンロード結果
1 2 3 4 5 6 |
. └── linuxcommand.net ├── index.html ├── robots.txt ├── wp-content 以下省略 |
オフライン環境での表示結果

対象のwebページが外部のサーバを利用してコンテンツを表示している場合
コマンド例
1 |
wget -p -E -k -H http://www.linuxcommand.net/ |
実行結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
. ├── fonts.googleapis.com │ └── 省略 ├── fonts.gstatic.com │ └──省略 ├── linuxcommand.net │ ├── robots.txt │ ├── wp-content │ └省略 ├── s0.wp.com │ └── 省略 ├── secure.gravatar.com │ └── 省略 ├── stats.wp.com │ └── 省略 └── www.linuxcommand.net └── 省略 |
対象のwebページが外部のサーバを利用してコンテンツを表示している場合2(ダウンロードしてきたサーバのディレクトリを作成しない)
コマンド例
1 |
wget -p -E -k -H -nH http://www.linuxcommand.net/ |
実行結果
1 2 3 4 5 6 7 8 |
. ├── images ├── index.html ├── robots.txt ├── s ├── wp-content └── wp-includes いくつかのディレクトリの内容やファイルは省略 |
オプションの説明
オプション | 機能 |
-p (--page-requisites) | 表示に必要なファイルを一緒にダウンロードする。 (.css, .png, .gifなどのファイル) |
-E (--adjust-extension) | 例えば、ダウンロードされたファイルのhtmlのファイルであるのに接尾辞が.htmlで終わらないようなファイルをダウンロードしたときに、wgetがダウンロードしたファイルをローカルに保存するとき、自動的に.htmlのような接尾辞をそのダウンロードしたファイルにつけてくれるオプション。cssなどのファイルも同様に行ってくれる。 |
-k (--convert-links) | すべてのファイルがダウンロードされた後に、ダウンロードされたファイルのリンクを、ローカル上に保存した状態に合わせてリンクを修正する。リンクを直すときは 相対パスで修正される。 ダウンロードされなかったファイルのリンクについて、対象のファイルのリンクの書かれ方にかかわらず、絶対パスのURLに修正される。 |
-H (--span-hosts) | 対象のサーバーから見て、外部にあるサーバー(ドメイン)に置かれているコンテンツもダウンロードできるようにする。 サーバーの負荷分散やクラウドサービス等を利用して、別のサーバーにコンテンツを置いているようなサイトからダウンロードするためのオプション。 |
-nH (--no-host-directories) | このオプションをつけない場合、ダウンロードしたファイルをホストごとにディレクトリを作成して、それぞれのホストのディレクトリにダウンロードしたファイルを保存する。 -Hオプションをつけていると多くのサーバからファイルをダウンロードすることになり、大量のディレクトリが作成される多いので、このオプションをつける。 |
認証のあるサイトのページのダウンロード
1.認証のあるサイトで認証するときにPOSTされるデータを調べます。(Firefox:Firebug,Chrome:デベロッパーツール)
2.認証のあるページでcookieを手に入れます。
1 2 3 |
wget --save-cookies cookies.txt \ --post-data '<POSTデータ>' \ https://example.com/auth.php |
3.目的のページをダウンロードします。
1 |
wget --load-cookies cookies.txt -p -E -k https://example.com/article.php |
特定のファイルのみダウンロード
コマンド例
1 |
wget -p -H -nH -A .png http://www.linuxcommand.net/ |
特定のファイルのみダウンロードしない
コマンド例
1 |
wget -p -H -nH -R .png http://www.linuxcommand.net/ |
オプションの説明
オプション | 機能 |
-A (--accept) | ダウンロードするファイルタイプまたは、パターン |
-R (--reject) | ダウンロードしないファイルタイプまたは、パターン |
再帰ダウンロード
コマンド例
1 |
wget -r -np -w2 -t3 -D linuxcommand.net -p -E -k -H -nH http://www.linuxcommand.net/ |
コマンド例のオプションの説明は以下のようになります。
-rで再帰ダウンロード、-Dは再帰ダウンロードでよくわからないドメインまでダウンロードしないようにフィルタをかけます。
-wで2秒間の間隔でダウンロードし、-tでダウンロードが失敗したときに3回までダウンロードをし直します。
-npは上の階層のページをダウンロードしないようにするオプションだが、ここでは必要はないと考える。一応コピペ用でつけています。
-p,-E,-k,-H,-nHでページの表示をそのままにローカルにダウンロードします。
再帰ダウンロードはサーバーに負荷をかけるので、一定時間を空けるような-wオプションなども検討する。
オプションの説明
オプション | 機能 |
-r (--recursive) | 再帰ダウンロードを行う。深さが5まで階層を潜って、ダウンロードする。 |
-np (--no-parent) | 再帰ダウンロード時に、親の階層にいかなくなる。 |
-w (--wait) | ファイルをダウンロードするのに一定時間の間隔をあける。単位がなければ秒、mをつければ分、hをつければ時、dをつければ日、の間隔をあけることができる。 |
-t (--tries) | 試行回数を設定する。無限に再試行する場合は「0」または「inf」を指定する。 デフォルトでは、「接続拒否」または「見つからない」(404)などの致命的なエラーは除き、再試行されない。 |
-D (--domains) | ダウンロードするドメインを指定する。複数のドメイン指定する場合はコンマ(,)で分ける。 |
その他のオプションの説明
オプション | 機能 |
--random-wait | waitオプションの時間をランダムに0.5~1.5倍した時間間隔でダウンロードする。 |
-l | 再帰ダウンロードする深さを指定する。 このオプションがないときは5の深さまで再帰ダウンロードを行う。 |
-P | 保存するディレクトリを指定する。 |
参考
wgetマニュアル(英文)