はてなブックマークのAPIを使って、はてブのコメントと関連エントリーを取得する

はてなブックマークエントリー情報取得API(以下、はてブAPI)を使って、はてなブックマークコメントと関連エントリーを取得してみます。

今回、はてなブックマークのAPIを叩くために使うのは、Python(2.7.5)、urllib2モジュール、jsonモジュールです。はてなの開発によれば、

http://b.hatena.ne.jp/entry/json/任意のURL(この任意のURL では # を %23 にエスケープする必要があります) を GET リクエストで送信することにより、JSON 形式でデータを取得することができます。

ということです。適当なページのURLを使って試してみます。

このページのURLを使って、はてブAPIを叩きます。JSON形式で返ってくるので、返ってきたJSONをPythonのjsonモジュールで読み込みます。

# 対象のURL
url = "https://okuzawats.com/pi-top-20151109"

# はてブのAPIを叩いてJSONを取得する
data = urllib2.urlopen("http://b.hatena.ne.jp/entry/json/%s" % url).read()

# JSONをデコードする
jsonData = json.loads(data)

これで、はてなブックマークのデータを扱いやすい形式で取得することができました。

取得したデータは、以下のような構造になっています。辞書型のデータ形式になっています。

  • count:はてなブックマークの数
  • screenshot:スクリーンショットのURL
  • title:記事のタイトル
  • url:記事のURL
  • related:記事の関連エントリーに関する情報
  • bookmarks:記事に付けられたブックマークに関する情報
  • entry_url:記事のはてなブックマークページのURL
  • eid:記事のID

さらに、relatedおよびbookmarksは内部にリストを持っています。それぞれ、

related:1エントリーにつき5個の要素を持つリスト。リストの要素は以下のキーを持つ辞書

  • count:関連エントリーに付けられた、はてなブックマークの数
  • url:関連エントリーのURL
  • entry_url:関連エントリーのはてなブックマークページのURL
  • eid:関連記事のID
  • title:関連記事のタイトル

bookmarks:1エントリーについているブックマークの数だけ要素を持つリスト。リストの要素は以下のキーを持つ辞書

  • comment:ブックマークコメント
  • timestamp:ブックマークの付けられた日時
  • user:ブックマークを付けたユーザーのはてなID
  • tags:ブックマークに付けられたタグ

Pythonを使って、これらの要素を抽出してみます。

JSON形式のデータは辞書型ですので、キーを使ってアクセスします。一応、キーが存在するかどうかを確認して、キーが存在していたら要素にアクセスします。

こんな感じです。”in”を使って辞書の中にキーが存在することを確認して、キーが存在した場合には処理を実行します。

if "count" in jsonData:
    print jsonData["count"]

relatedおよびbookmarksについては、前述のとおり内部にリストを持っていますので、for文を使ってアクセスします。bookmarksの各要素に関するキー値の確認は省略。

if "bookmarks" in jsonData:
    for bookmark in jsonData["bookmarks"]:
        print (bookmark["user"],
               bookmark["timestamp"],
               bookmark["tags"],
               bookmark["comment"])

こんな感じで、はてブAPIで取得したJSONデータを読んでいくわけですが、後の要素もだいたい同じ感じで読めるので、ここではコードを省略します。GitHubに最新版を公開しておきますので、興味がある方はこちらを見ていただいて、ついでにフォローやスターをしてもらえると嬉しいです!

はてなブックマークのAPIを叩いてブックマークに関する情報を取得するスクリプト on GitHub

よろしくお願いします!

シェアしてもらえるとうれしいです。゚(´っωc`)゚。