Webページを丸ごと保存してオフラインでも表示できるコマンドラインツールmonolith

公開日:2019/08/24 更新日:2019/08/24
Webページを丸ごと保存してオフラインでも表示できるコマンドラインツールmonolithのサムネイル

はじめに

Webページを丸ごと1つのHTMLファイルとして保存できるコマンドラインツールであるmonolithを使ってみたのでそのインストール手順と簡単な使い方をまとめます。

monolithについて

monolithは、指定したURLのWebページのテキストだけでなく、CSS、画像、JavaScriptを含む全てを1つのHTMLファイルとしてローカルに保存します。画像もBase64で変換されたものがHTML内に含まれるため、オフラインでも保存したWebページを完全に再現できます。以下が公式リポジトリです。

github.com

Save HTML pages with ease

なお、monolithはまだ公開されたばかりのためバグも色々と残っているかもしれませんが、一方で今後の開発が楽しみです。

前提と環境

この記事では、WSL上のUbuntu18.04にインストールしました。

  • OS : Ubuntu18.04 (WSL上)

事前準備

monolithは、Rustで開発されているため、CargoというRustのパッケージマネージャおよびビルドツールを用いてインストールします。また、SSL使用するためlibssl-devが必要となります。したがって、以下のコマンドで必要なパッケージをインストールしておきます。

$ sudo apt install cargo libssl-dev

以上で事前準備は完了です。なお、その他のディストリビューションにおける上記パッケージの名称は異なりますが、以下のサイトにまとめられています。

www.linuxuprising.com

Monolith is a command line tool to save any web page as a single HTML file that contains everything needed to render web page locally, without needing a working Internet connection.

monolithをインストールする

monolithの公式リポジトリをクローンして、先程インストールしたCargoを使ってインストールします。少し時間がかかるので待機します。クローンするディレクトリは任意の場所で大丈夫です。

$ git clone https://github.com/Y2Z/monolith.git
$ cd monolith
$ cargo install --path .

上記が完了すると、最終的に以下のようなメッセージが表示されてインストールが完了します。

(...以上省略...)
Compiling monolith v2.0.8 (/home/username/Downloads/monolith)
    Finished release [optimized] target(s) in 4m 47s
  Installing /home/username/.cargo/bin/monolith
warning: be sure to add `/home/username/.cargo/bin` to your PATH to be able to run the installed binaries

上記にwarningと警告が出ているように、このままでは必要なパスが通っていないため以下のコマンドでホームディレクトリにある~/.bashrcにパスを追記します。

$ echo "export PATH=\"\$PATH:\$HOME/.cargo/bin\"" >> ~/.bashrc

パスを追記したら以下で~/.bashrcを再読込して反映させます。

$ source ~/.bashrc

ここでパスを追記、~/.bashrcを再読込して反映しておかないと、monolithコマンドを使っても以下のように見つかりませんと表示されます。

$ monolith
monolith: コマンドが見つかりません

正常にインストールされている場合は、以下のようにバージョンを確認できます。

$ monolith --version
monolith 2.0.8

以上でインストールは完了です。

monolithを使ってWebページを丸ごと1つのHTMLファイルとして保存する

monolithの使い方は非常に簡単で、以下のコマンドを実行することで指定したURLのWebページをCSS、画像、JavaScriptを含む状態で1つのHTMLファイルとして保存します。

$ monolith https://www.virment.com/ > virment.html

HTMLファイルは現在いるディレクトリに保存されますが、もちろんパスを指定してもOKです。

$ monolith https://www.virment.com/ > ~/Downloads/virment.html

画像が不要な場合

もしBase64で変換された画像データをHTML内に含めたくない場合は、以下のように-iオプションを使用します。

$ monolith -i https://www.virment.com/ > virment-noimages.html

以下はこのサイトのトップページですが、画像だけない状態で保存されます。

noimage-monolith.png

JavaScriptが不要な場合

JavaScriptをHTML内に含めたくない場合は、以下のように-jオプションを使用します。

$ monolith -j https://www.virment.com/ > virment-nojs.html

まとめ

簡単なスクレイピングツールとして色々と使えそうです。

関連記事

開発アプリ

nanolog.app

毎日の小さな出来事をなんでも記録して、ログとして残すためのライフログアプリです。