wget - webページをダウンロードする

ブラウザ等でwebページをダウンロードすることもできますが、wgetコマンドではwebページをもう少し複雑な条件でダウンロードを行うことができます。また、wgetコマンドを利用して、一定の周期でwebページをダウンロードを行うことができれば、簡単なクローラーのようなことができます。

基本的なダウンロード

コマンド例

ダウンロード結果

オフライン環境での表示結果

対象のwebページをローカルに保存(対象のドメインのページのみ)

コマンド例

ダウンロード結果

オフライン環境での表示結果

対象のwebページが外部のサーバを利用してコンテンツを表示している場合

コマンド例

実行結果

対象のwebページが外部のサーバを利用してコンテンツを表示している場合2(ダウンロードしてきたサーバのディレクトリを作成しない)

コマンド例

実行結果

オプションの説明

オプション 機能
-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を手に入れます。

  3. 目的のページをダウンロードします。

特定のファイルのみダウンロード

コマンド例

特定のファイルのみダウンロードしない

コマンド例

オプションの説明

オプション 機能
-A

(--accept)

 ダウンロードするファイルタイプまたは、パターン
-R

(--reject)

 ダウンロードしないファイルタイプまたは、パターン

再帰ダウンロード

再帰ダウンロードはサーバーに負荷をかけるので、一定時間を空けるような-wオプションなども検討する。

コマンド例

-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マニュアル(英文)

http://www.gnu.org/software/wget/manual/wget.html