blog.bouzuya.net

2016-01-04 はてなブログの access log を scraping した

仕事はじめのことを書かず、 2016-01-02 につくった bouzuya/cars-counter-hatena-blog-accesslog のことを書く。

bouzuya/cars-counter-hatena-blog-accesslogbouzuya/cars の counter のひとつだ。はてなブログのアクセス解析に表示される「今日」「週間」「月間」「合計」を収集する。

今回の目的は 2015-12-31 に書いた

影響力を高めるため、 blog.bouzuya.net を使いやすくし、利用者を増やす。

が対象だ。「利用者を増やす」以前に現状の利用者数を把握していないので「まずは計測」というわけだ。

実装は Node.js と CoffeeScript を使っている。Node.js は bouzuya/cars の都合で、CoffeeScript なのは慣れの都合だ。 はてなブログの API にはアクセス解析に表示される情報を取得できるものはないので、bitinn/node-fetchcheeriojs/cheerio で scraping している。今回はいつもの request/request ではなく bitinn/node-fetch を使った。そろそろ Fetch API に慣れたいからだ。

Cookie を parse している箇所 を library で対応できるとうれしい。 bouzuya/cookie-storage を任意の文字列の parse に対応させようかな。

parsed = {}
cookies.forEach (cookie) ->
  pattern = new RegExp('\\s*;\\s*')
  cookie.split(pattern).forEach (i) ->
    [encodedKey, encodedValue] = i.split('=')
    key = decodeURIComponent(encodedKey)
    value = decodeURIComponent(encodedValue)
    parsed[key] = value
  , {}
parsed

bouzuya/cars は counters and reporters の名前のとおり count し report する app だ。詳細は 2014-02-04 に書いた。実例は bouzuya/cars-example を見ると良い。これは、ぼくの普段使いの cars である。 package.json を見れば分かるが、はてなブックマークや GitHub の情報をはてなグラフにまとめている。

どうやらぼくの cars は 2015-12-04 から動いていなかったようだ。止まっていると気づかずにいた。それもついでに直しておいた。