とりあえずXMLの整形とかZIPへの追記とかめんどくさくなってきたので、先にThe Doujinshi & Manga Lexiconのパーサーを作成することにした。
とりあえず、HelloWorld的にHTMLをダウンロードして一行ずつ表示するスクリプト。
特にこれといって言及するポイントは無いんだけれども、ひとつ上げるとしたら15行目。
ダウンロードしたHTMLの中に改行が入っているので、そのままprint(line.decode('utf-8'))とすると一行ごとに空白行が追加されてしまう。PythonのprintはJavaでいうところのSystem.out.printlnと同じように自動的に改行を入れてしまう。
そこで、end=""というのを追加することでそれを回避する。
これを実行すると単にコンソール出力にHTMLが表示されるだけだが、必要な情報が入っているあたりを抜き出すとこんな感じ。
このへんをうまく正規表現とかで抜き出していけば情報をとってくるほうはできるはず。
まともに関数型プログラミングなんかしたことないけれども、こういうテキストをどうこうする部分というのは、OOPではなく関数型のほうがパラダイムとして向いているのでは?みたいな感覚というのを持った。
いちいち取り出した情報をインスタンス変数に格納してゲッターメソッドで取り出して…とするよりも、urlを引数に与えたら辞書で必要な値を返す関数を書いたほうが効率的だと思う。
そういえば、Pythonにおける辞書とjsonはほぼ同じに見えるし(役割として)jsonとXMLは見た目が違うだけで同じもの(役割として)だ。ということは、Pythonの辞書からXMLを作ることもできるんじゃないだろうか。
そ思いついたので調べてみると、やっぱり相互変換できるようだ。
(Python: xmltodict で XML と辞書を相互に変換して扱う)
また、これは知らなかったんだけど OrderdDictという順序付きの辞書もあるようだ。これを使ってXMLを生成したほうが編集→ソートよりいいかも。