📑

pure python3 html/m-html parserを作った

2023/03/18に公開

Google Chromeなどを最近のモダンのブラウザでは、ウェブページの完全保存をサポートしている。

https://shakelog.com/chrome-mhtml/

この完全保存はそのまま元のブラウザにドロップすると概ね元通りの表示を得られるので意外と取り回しが良い。
しかもchromebookに至っては、Googleドライブに直接保存できるので 非常に便利である。

具体的なファイルの中身はRFC2046 に準拠している。

https://www.rfc-editor.org/rfc/rfc2046

http://www.t-net.ne.jp/~cyfis/rfc/mime/rfc2046_ja-1.html

題名こそ ”Multipurpose Internet Mail Extensions” 直訳すると ”多目的メイル拡張”だが、有体にいえば、添付メイルのサポートである。
実際には base64やらquoted-printableにエンコードされてるため、生では読めない。変換が必要である。

parse mhtml

まず外側のmhtmlだが、あちこちで紹介されてるソースでは 処理できなかった。例えばここ。

https://stackoverflow.com/questions/62158595/read-mhtml-file

仕方ないので、pure python3 で、依存パッケージのない parser を書いた。

https://github.com/kamawanu/zenn.dev-kamawanu-codes/tree/main/mhtmlparser

特に変な小細工はしてない。ファイル末尾のサンプル実装のとおりである。

https://github.com/kamawanu/zenn.dev-kamawanu-codes/blob/main/mhtmlparser/mhtmlmini.py#L164-L179

GPLです。

parse html

Pythonでのhtmlの処理では既に有名なライブラリが多数存在している。
しかし小生は前述のとおり、 googleドライブにmhtmlファイルを保存したまま処理したかったので、Google Colaboratoryの上で簡単に実行できるように、依存ライブラリは極力減らしたい。

例によって自作した。 外部の依存パッケージは使わない。全てpython3本体の同梱ライブラリを使ってる。

https://github.com/kamawanu/zenn.dev-kamawanu-codes/tree/main/htmlparser

とりあえず title を探せばよいので、finditerだけは実装した。

https://github.com/kamawanu/zenn.dev-kamawanu-codes/blob/main/htmlparser/htmlminidom.py#L49-L57

これまたGPLです。

Discussion