ブラウザ等で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オプションをつけていると多くのサーバからファイルをダウンロードすることになり、大量のディレクトリが作成される多いので、このオプションをつける。 |
認証のあるサイトのページのダウンロード
- 認証のあるサイトで認証するときにPOSTされるデータを調べます。(Firefox:Firebug,Chrome:デベロッパーツール)
- 認証のあるページでcookieを手に入れます。
123wget --save-cookies cookies.txt \--post-data '<POSTデータ>' \https://example.com/auth.php - 目的のページをダウンロードします。
1wget --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/ |
-p,-E,-k,-H,-nHでページの表示をそのままにローカルにダウンロードする。
-rで再帰ダウンロード、-Dは再帰ダウンロードでよくわからないドメインまでダウンロードしないようにフィルタをかける。
-wで2秒間の間隔でダウンロードし、-tでダウンロードが失敗したときに3回までダウンロードをし直す。
-npは上の階層のページをダウンロードしないようにするオプションだが、ここでは必要はないと考える。一応コピペ用でつけている。
オプションの説明
オプション | 機能 |
-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マニュアル(英文)