Mac の wget コマンド: ウェブサイトを一括でダウンロード

informatics/commands_mac/wget_mac
2017/12/03 更新

  1. wget のインストール
    • インストーラーを使用
    • コマンドラインを使用
  2. wget の使い方
  3. wget の実際
    • ブログの保存
    • Naver まとめの保存

広告

概要: wget のインストール

wget はウェブサイトを一括でダウンロードできる便利なコマンドで、本来は Linux のコマンドのようである。Macターミナル でも使うことができるが、もともとインストールされているコマンドではないので、まずインストールする必要がある。


インストーラーを使用

このページ に Rudix へのリンクがあり、Sierra から Snow Leopard まで対応したバージョンが揃っている。パッケージをダウンロードしてインストールするのが簡単だろう。

2017 年 11 月、Sierra でうまく動くことを確認。

ただし、Mac の総合開発環境である Xcode がないと動かないので、入っていない場合はこれもインストールする必要がある。Xcode は iOS アプリ開発などに使われるプログラムパッケージで、Apple Store から無料で入手することができる。

以下のようなエラーウィンドウが出たら、Xcode を入れろということ。


コマンドラインを使用

コマンドラインを使用したインストールは複雑で、2014 年に一度成功、2017 年に別の Mac で試したが、セキュリティの問題が解決できず、うまくいかなかった。

一応、2014 年のインストール記録を残しておく。2014年8月23日, Mac OS X 10.9.4, 1.86 GHz Intel Core 2 Duo, 参考サイトは Ref 1 および 2。


Documents の中に wget というフォルダを作り,そこにインストールする。

$ cd ~/Documents
$ mkdir wget
$ cd wget
$ sudo curl -O http://ftp.gnu.org/pub/gnu/wget/wget-1.13.4.tar.gz


sudo コマンドなのでパスワードを要求される。うまくいくと,このフォルダに wget-1.13.4.tar.gz というファイルがダウンロードされるので、このファイルを解凍する。

$ sudo tar zxvf wget-1.13.4.tar.gz


すると wget-1.13.4 というフォルダができるので,cd コマンドでそこへ移動して configure を実行。

$ cd wget-1.13.4
$ sudo ./configure –with-ssl=openssl


私の場合はここでエラー。オプションを除いて試してみたりしても、以下のいずれかのエラーがでて止まってしまう。

  • configure: error: invalid variable name: `–with-ssl'
  • configure: error: –with-ssl was given, but GNUTLS is not available.

このときは、-with-ssl-openssl というオプション部分を コピぺでなく手打ちして追加 したら解消される。たぶん、ハイフンとダッシュの違い などが影響していたのだろう。

このあとは

$ sudo make
$ sudo make install

で完了。

2017 年に自宅の Mac で再トライしたときは、どうも SSL 接続を確立することができなかった様子。インストールとはまた別の問題ではあるが、まだ解決できていない。


広告

wget の使い方

ダウンロードしたいサイトの URL を、以下のように ターミナル に打ち込み実行する。

$ sudo wget -r -l 3 -x http://ultrabem.jimdo.com


すると

FINISHED --2014-08-22 22:21:03--
Total wall clock time: 10m 31s
Downloaded: 405 files, 8.9M in 1m 5s (140 KB/s)


という完了メッセージとともに wget-1.13.4 の中に ultrabem.jimdo.com というフォルダができて,html ファイルが保存される。-r や 3 などはオプションである。実際に使いそうなオプションを一覧にしておく。


オプション一覧

文献 3, 4 などから。

-r

再帰的取得を行う。

-l Number

リンクをたどる階層数を指定する。-r のオプション であり、-r をせずに -l だけ指定しても意味がない。l は小文字の L。

上のコマンドでは、まず指定された http://ultrabem.jimdo.com を取得し、ここから 3 個までリンクを辿り、含まれる全てのページを取得するということになる。

0 を指定すると無制限 であり、そのドメインの全てのファイルを取得できる (4)。

-x

ローカルにディレクトリを作って保存する。ファイルが整理されるので、常に入れるようにしている。

-c

ダウンロードに失敗しても、やり直しする。

-k

取得時に絶対リンクを相対リンクに書き換える (参考: リンクの種類と張り方)。

下の項目で述べるように、ブログをダウンロードすると絶対リンクが張られていることがある。この場合、取得した html をローカルで開いても、リンクをクリックするとウェブサイトに飛んでしまう。

私の場合、貴重なサイトは万が一消えた時にもローカルで見られるように保存しているので、これは都合が悪い。つねに -k オプションを入れるようにしている。



wget の実際

Jimdo

Jimdo は sudo wget -r -l 3 -x http://ultrabem.jimdo.com で 3 階層の取得ができた。805 個のファイル、26 M をダウンロードするのに約 12 分かかった。

Google Blogspot

OK。しかし -k オプションを使っても、カテゴリ一覧などはやはりネット上のファイルにリンクしている模様。まあ仕方ないだろう。コメントも feeds というフォルダに保存される。画像はどうなるのかよくわからない。

X server

X サーバーにある自分のサイト https://ultrabem-hobby.com の場合、--no-check-certificate というオプションを追加する必要があった。html ファイル、php ファイル、画像ファイルともにちゃんとローカルに保存される。

Seesaa blog

Seesaa blog の場合、html ファイルのダウンロードおよび相対リンクへの変換はちゃんとできるが、画像ファイルが保存されない。これは 2 つの問題があった。

  • 例えば trrgae.seesaa.net というドメインの場合、画像は違うドメインに保存される仕様になっているようだ。私の場合は trrgae.up.seesaa.net など。
  • そこで URL に up を加えて wget し直すと、403 Forbidden というエラーが返ってくる。これは ページは存在するが閲覧が許可されていない というエラー。おそらくホストが制限をかけているのではないかと予想。
  • もう少し試してみる。trrgae.up.seesaa.net/images/aa.jpg と画像を直接指定すると、ブラウザでの表示、wget ともに可能。
  • しかし trrgae.up.seesaa.net/images/ というフォルダ指定の場合、ブラウザ、wget ともに 403 エラー。つまり画像への一括アクセスができないようになっていると思われる。



広告

コメント欄

一言コメントをどうぞ! (基本500字まで - 100字のページもあるかも)



フォーラムを作ったので、各ページにあるコメント欄のうち、コメントがついていないものは順次消していきます。今後はフォーラムをご利用下さい。管理人に直接質問したい場合は、下のバナーからブログへ移動してコメントをお願いします。


References

  1. Macでwgetコマンドを使えるようにするの書. Link
  2. MacOSXにwgetをインストール. Link.
  3. wgetの使い方. Link: Last access 2017/12/03.
  4. wgetコマンドで覚えておきたい使い方16個 (+1個). Link: Last access 2017/12/03.