wgetコマンドでウェブサイトをサクッと丸ごとダウンロード!

wgetコマンドでウェブサイトをサクッと丸ごとダウンロード!

何年か前に少しやっていたブログ(WordPress)。もう更新することもないだろうし、サーバーのレンタル料金も勿体ないので閉じることに。

50記事ほどしかないとはいえ、当時の自分を思い出せる貴重な記録なので、どうにか残せないかと考えたところ、「丸ごと持ってきて手元に置いておこう」と決めました。

方法としては・・・

  • 各記事・ページをPDF保存 → ちょっと面倒
  • Mac内にMAMP(Apache, MySQL, PHP)環境を構築して再現 → 残すだけの目的にしては少々大げさ過ぎる
  • HTML形式で丸ごと保存 → 良さそう

ということで、記事間や外部へのリンクも残せるし、手軽な「HTML形式で丸ごと保存」でいくことに。ただブラウザで記事ページを一つ一つ表示させてHTML形式で保存するのはPDF保存と変わらないので、コマンドで1発で済ませよう。

そこで使用するコマンドが「wget」。

wgetコマンドとは

「wget」コマンドは、ウェブサーバーからコンテンツを取得するダウンロードツール。指定したURLのサイトを丸ごと保存できます。

wgetの準備

wgetはLinux系OSだとほぼ標準で利用可能で、MacやWindowsにも移植されてます。

Macにインストール

macOSはUnixベースのOSなのですが、wgetが標準では入っていません。ですのでHomebrewでインストールする必要があります。こちらもコマンド1発です。

$ brew install wget

Windowsにインストール

ゼロは普段Windowsをあまり使わないので、Windowsへのwgetのインストールはこちらをご参考に。

https://www.youfit.co.jp/archives/2230

https://pekochin.com/wget-windows/

Ubuntuには標準搭載!

特に必要な作業はありません。そのまま使えます。

必要なオプションはこれだけ

wgetコマンドにはたくさん指定できるオプションがあるのですが、特殊な使い方をしない限り(サイトのダウンロードだけを目的とするなら)、これだけおさえておけば問題ないはず。

オプション意味
-r
–recurcive
再帰ダウンロードを行う
-l 数
–level=数
再帰の深さ、リンクを辿る回数
-l 0 または -l inf は無限
-p
-–page-requisites
ローカル環境で表示するための必要な画像やスタイルシートなどのコンテンツも取得
-k
–convert-links
取得したコンテンツ内のリンクをローカルを指すよう(相対パス)に書き換え
–restrict-file-names=nocontrolマルチバイト文字のファイル名をダウンロードする場合の文字化け防止 *1
–adjust-extension拡張子がついていないファイルに拡張子をつける。例えば、/aboutというHTMLはabout.htmlとして保存 *2

*1 日本語のリンク(URL)がある場合には

–restrict-file-names=nocontrol

日本語のURLがある場合、このオプションで文字化けを防げます。文字化けが発生するとリンクをクリックしてもそのページにジャンプしません。

文字化け発生
オプションで修正

*2 固定ページなどがHTMLファイルとして保存されない場合

–adjust-extension

リンクをクリックすると、WordPressではHTMLデータを返すので表示されるのですが、ダウンロードして保存するとファイルが.htmlファイルじゃなくてブラウザで開けないことがあります。そんな時のためのオプション。

About(http://ドメイン/about)をクリックしてもブラウザでは表示されない。代わりにファインダーでファイルの場所が開かれる。
オプションを使うとabout.htmlで保存されてブラウザでの表示も問題なし

まとめ:wgetコマンドはこれ

ごく一般的なサイトを丸ごとダウンロードするのに十分なコマンドはこれ。

wget -r -l 0 -p -k --restrict-file-names=nocontrol --adjust-extension <URL>

<URL>の部分をダウンロードしたいサイトのアドレスに置き換えて実行すれば保存されます。