Pythonで、はてなAPIを使ってみる(1)
はてなのブックマークネットワークを利用して、ネットワーク分析をやろうと思っていたのだが、現実のネットワークデータを取得するときの常套手段のwgetを使えないことが判明した。(正確には、うちの研究室のサーバーは昔、wgetではてなさんにご迷惑をかけたことがあるらしく、wgetによるアクセスが禁止になっていました。はてなさんごめんなさい(><))
なので、推奨された方法でデータをとるにはやっぱりAPIしかないだろうと調べてみたら、やっぱりあった。
はてなブックマークのAPI - はてなブックマークヘルプ
正直、APIを利用することが初めてなので、あんまりイメージが湧かない単語があったりしましたが、それでも何とかpythonのモジュールを使ってデータの取得に成功しました。PythonではてなAPIを使う人の参考になればと思い、下に詳細をノートしておきます(><)
はてなブックマークエントリー情報取得API
はてなブックマークエントリー情報取得APIとは - はてなキーワード
仕様は上のリンク先に書いてあります。わかる人にはわかるんでしょうけど、僕にははじめ何の事だかさっぱりでした。
そもそも、ブックマークエントリーとは何なのかというと、
はてなブックマーク - シコウサクゴ()
↑こんな感じのものです(自分のブログに自分でブックマークしているという悲しい絵です)。ここに書いてある情報を取得できるのが今から取り上げるAPIです。
Pythonで取得
細かいことは説明できないので、とにかく使用例をあげます。
まず、使用するために2つのモジュールをインポートします。
In [68]: import urllib2 In [69]: import json
urllib2はページの取得に、jsonはjson形式データの取得のために使います。
次に、urllib2とjsonを使って、データを取得します
In [75]: url = "http://d.hatena.ne.jp/yosshi71jp/" In [76]: data = urllib2.urlopen("http://b.hatena.ne.jp/entry/json/%s" % url).read() In [77]: info = json.loads(data.strip('(').rstrip(')'))
結局、これだけでデータを使いこなせるような形で取得することができました。
どんなデータを取得できたかを調べるために、infoのキーを調べてみます。
In [78]: info.keys() Out[78]: [u'count', u'screenshot', u'title', u'url', u'related', u'entry_url', u'eid', u'bookmarks']
ひとつひとつのキーの内容については割愛しますが、おおよその情報はとってこれるようです。特に、今回使いたいデータはbookmarksというキーの値で、bookmarksの値もまた辞書型になっており、
In [81]: info['bookmarks'][0] Out[81]: {u'comment': u'', u'tags': [], u'timestamp': u'2009/07/15 19:09:43', u'user': u'yosshi71jp'}
こんな感じで、ユーザーIDや登録時間などのデータを取得することができます。
私的な話としては、ここからそれぞれのユーザーのブックマークを調べていくので、もう一段階プログラムをやらなくてはいけないのですが、まあ焦らずゆっくりやります。
各ユーザーのブックマークを調べるにはrss形式のデータを利用するしかないのかと思っているのですが、何かアドバイスのある方、ぜひお願いします(><)