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

UB3/informatics/commands_mac/wget_mac

このページの最終更新日: 2024/02/07

  1. wget のインストール
  2. wget の使い方
  3. wget の実際: 各種ブログサイトで試してみた結果など

広告

概要: wget のインストール

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

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

インストールの過程で以下のようなエラーウィンドウが出たら、Xcode を入れろということ。

Xcode インストール

Homebrew を使用

Homebrew を使う方法一択 と言って良い。まず このページ から Homebrew をインストールし、brew install wget を実行するだけ。


バイナリファイルからインストール

この方法は複雑で、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 を使って以下のように実行する。興味のあるサイトを丸ごとダウンロードできるオプション付きで示しておく。-r の次の -l は小文字の L である。

sudo wget -r -l 0 -ckx 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 ファイルが保存される。


オプション一覧

wget のバージョンによるのかもしれないが、少なくともこれを書いているバージョン 1.21.4 built on darwin22.4.0 では、長いフルのオプションとショートカットがある。

つまり、例えばバージョンを調べたい場合は wget --version であるが、これは wget -V と同じ。wget --help でオプションの一覧を見ることができる。以下は一部。

-r
--recursive

再帰的取得を行う。

-l Number
--level=NUMBER

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

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

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

-m
--mirror

-N -r -l inf --no-remove-listing のショートカットであり、無限に再帰してローカルよりも新しいファイルをダウンロードする。

-x
--force-directories

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

-p
--page-requisites

ページを表示するのに必要なファイルを全てダウンロードする。画像など。

-c

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

-E
--adjust-extension

正しい拡張子で保存する。

-k
--convert-links

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

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

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

--restrict-file-names=OS

OS が使うことのできるファイル名をつける。


WordPress サイトの静的化に使う

このページ では、以下のようなオプションをつけて実行している。私の場合は、Unable to locally verify the issuer's authority.というエラーが出たので、--ca-certificate=/usr/local/etc/ssl/cert.pem を追加する必要があった (参考)。

または、--ca-certificate の行を --no-check-certificate とする方法がターミナルで suggest された。これでも大丈夫のようだ。

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 エラー。つまり画像への一括アクセスができないようになっていると思われる。
Hatena blog



広告

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.
  5. wgetでこういう時はこうする!! Link: Last access 2019/06/19.

コメント欄

サーバー移転のため、コメント欄は一時閉鎖中です。サイドバーから「管理人への質問」へどうぞ。