Chienomi

Webページを単一のHTML (data, BASE64形式) に保存する

webページを保存するのにwgetは便利なのだけど、最近のウェブページは非常に複雑なので大量のファイルが生成されることがある。

もちろん、単純には

$ wget -p -k -E URL

でいいのだけど、ちょっと使いづらい。 単純にページを保存したい場合には、「そうじゃないんだよなぁ」と思うことがある。

あるいはテキストページなら

$ w3m -dump URL > file

という手もあるけど、これも画像が入っていたりレイアウトされていたりすると「そうじゃない」となる。

mhtmlは扱いづらいし、せっかくdata形式で埋め込めるのだから、画像やCSSを埋め込んだHTMLファイルを作ってほしい。

なんかないものかと探したところ、zTrix氏によるwebpage2htmlというプログラムが見つかった。

これがなかなか秀逸。

python webpage2html URL > file

でいいので話が早い。依存関係もpipで解消できる。 (requirements.txtも用意されている)

自動化が困難な場合にはwgetと組み合わせて二手間ほどかければ大丈夫だろう。

完成度はそこそこ。 今わかっている問題としては、サーバー側でcharsetを返さない場合、HTML内に書かれていたとしても文字エンコーディングを識別できず文字化けする。 指定もできない。

Pythonは内部文字エンコーディングに変換するため、ここでバグってしまうのだろう。 やっぱりwgetで落としてきて自前ウェブサーバーで指定するような手間が必要になる。

すごくいいツールなので、ぜひ育てていってほしいところ

Wrote on: 2018-07-23T00:00:00+09:00