作りたいもの:はてなダイアリーのクローラ

増井さんの作りたいものリストを作ろうというスライドを見て「確かに『いつかやる』リストに入れてるだけじゃ発展しないから、公開しても問題ないものは公開したらいいなぁ」と思ったのでやってみました。

背景

僕は今まで10年以上Web上での日記をつけ続けているが、いろいろな理由で使うものは変わってきた。今ざっと思い出せるだけでKENTのCGIPukiWikiMovableTypeZopeCOREBlogtDiaryBlogger…。はてなダイアリーは今調べてみたら2007年から5年間も使っている。珍しく長く続いている。

しかし、今後5年10年と使い続けるだろうか?いままでなんだかんだで使うものが変わってきたことを考えると、いずれ他のサービスor自前CMSに乗り換える可能性は低くないだろう。で、やめる際にはこのはてなダイアリー上のコンテンツを静的なHTMLにしたりしたくなるだろうな。むしろ、自分の書いたコンテンツが他人のサーバ上にしかないって現状はあんまりよいものじゃないな。まだやめるつもりはないけど今のうちから定期的にクロールして手元に保存しておいたらいいんじゃないかな。

wgetで?いやいや、それは無理

「Web上のコンテンツをクロールして静的HTMLとして保存する」というとすぐに思いつくのはwget -rを使う方法だろう。だけど、はてなダイアリーの場合それを使いづらい。

僕のはてなダイアリーはd.hatena.ne.jp/nishiohirokazuに置かれている。じゃあその記事に貼られている画像は?おっとはてなフォトライフだからf.hatena.ne.jpだ。ドメインから違う。一時期はてなフォトライフに置くのを面倒に思ってGyazoを使っていたりする。その2つは間違いなく使っているが、他に使っていないか自信がない。じゃあ「外部ドメインに置かれていても画像だけはダウンロードする」ってことでOKか?むむむ、OKかどうか自身が持てない。

キレイにしたい

さらに言えば、単にはてなダイアリーのHTMLを静的にGETしただけだと色々汚い。

  • はてなキーワードへのリンクがいっぱい入っている。取り除きたい。
  • シンタックスハイライトは便利に使ってきたけど、これspanでクラスを指定しているだけなので対応するCSSがないと綺麗な色にならない。しかしそのCSSはたぶんはてなの著作物で、勝手に僕のサイトに置くことはできないだろう。

まあでもこれはクロールした後の工程として切り分けるべきか。

結局何が必要なのか

  • はてなダイアリーをクロールする
  • リンクを何でもかんでも辿るのではなく指定したエントリーから指定したエントリーまでの間を「次のエントリー」リンクをたどって取っていく
  • 外向きのリンクはどのページからどこへのリンクが貼られていたか、AでかIMGでか、などを記録していく
  • 集計結果を見て画像とかをどうするか考える。画像の他に対処しないといけないものがないか考える。

まあキレイにしたいとか色々あるけどそれは保留してスモールスタートにしたほうがいいだろうな。