wgetでサイトを丸ごとダウンロードする

まえがき

昔から大好きなサイトがあります。
大阪の川(淀川水系大和川水系)を源流から調べたサイトです。

このサイトを一括して丸ごとダウンロードしてみたいと思い、アプリを探してみました。その途中に「cURL と違い wget ならばサイト内を再帰的にダウンロードできる」との記事を(どこかでw)見かけました。ので方針を変更して wget を使ってダウンロードすることにしました。
ただ、上記サイトのうち[http://agua.jpn.org/film/top.html:title=時代劇の風景 −ロケ地探訪]はさほど興味が無いので排除するように設定します。

注意

サイト丸ごとダウンロードは

  • 相手サーバに負荷をかける
  • 情報を複製しているので著作権問題が生じうる

など注意すべきことがあります。
いろいろ考慮してから実行してください*1

Macにwgetをインストール

Mac には wget が入っていませんので homebrew でインストールします。

$ brew install wget
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/wget-1.15_1
######################################################################## 100.0%
==> Pouring wget-1.15_1.mavericks.bottle.tar.gz
🍺  /usr/local/Cellar/wget/1.15_1: 9 files, 908K

終了ですw

ダウンロード指定

$ wget -m -X film --random-wait=on http://agua.jpn.org/

なまけものになりたくて - wget全オプション日本語訳に載っているオプション解説を引用しておきます。

-X --execute-directories=LIST 対象外ディレクトリ(フォルダ)を指定する。 (「時代劇の風景」を除く設定)
--random-wait=SWITCH ダウンロードの間に0〜2秒だけ間隔を空ける。(on、offが指定可能) (連続DLによるWebサーバへの迷惑を少しでも抑える)
(-w) (--wait=SECONDS) (ダウンロードの間にSECONDSだけ間隔を空ける。(秒)) (参考)
-m --mirror -N -r -l 0 --no-remove-listingを省略したもの (更新対応)

mirror オプションの意味も。更新取得時に便利ですね。

-N --timestamping タイムスタンプを比較して、ローカルに既に存在するファイルよりも新しいファイルだけを取得する。
-r --recursive 再帰ダウンロードを行う。
-l --level=NUMBER 再帰ダウンロード時の最大階層深度をNUMBERに設定する。
--no-remove-listing ".listing"ファイルを削除しない。

level オプションの NUMBER を 0 にすると無制限になります。また no-remove-listing オプションは FTP 向けなので気にしなくても良いと思います。

*1:すみません連続DLしてしまいました>_