文系プログラマによるTIPSブログ

文系プログラマ脳の私が開発現場で学んだ事やプログラミングのTIPSをまとめています。

【はてな】はてなブログのURL一覧とはてブ数を取得する方法【API】

この記事で、対象サイトの合計はてブ数を取得するWEB TOOLをリリースしたのですが、
内訳(どのURLが何件ブックマークされているか)を知りたいと思いました。

結果から言うと 可能 である事が解りました。

勿論以下を使えば、1記事づつはてブ数を取得できます。

GET リクエストでのシンプルな件数取得 API です。

http://api.b.st-hatena.com/entry.count?url=http%3A%2F%2Fwww.hatena.ne.jp%2F
のように http://api.b.st-hatena.com/entry.count の API エンドポイントにクエリパラメータ url を付与し GET リクエストを送ることで、簡単にカウント数を取得することができます。

http://developer.hatena.ne.jp/ja/documents/bookmark/apis/getcount?kid=87#p2

しかしこれでは何百記事もある場合はとても取得できません。
そもそもこのAPIで指定する記事のURL一覧が取得できないので、使えません。

色々調べた結果、複数のAPIを組み合わせて各記事の個別はてなブックマーク件数が取得できる事が解りました。
なお、記事が多い場合は手動で取得する事は無理に等しいので、基本プログラムで取得する事になります。

はてなブログの各記事のはてブ数を取得するフロー

大まかな処理フローは以下の通りです。

  1. はてなブログAtomPubを使ってページングしながら全URLを抽出。
  2. 被ブックマーク数取得APIを使って50URLづつはてぶ数を取得。

全記事のURL一覧を取得する

はてなブログAtomPubを使う事でURL一覧を取得します。

Atom Publishing Protocol(以下 AtomPub) はウェブリソースを公開、編集するためのアプリケーション・プロトコル仕様です。はてなブログのAtomPubと通じて、開発者ははてなブログのエントリを参照、投稿、編集、削除するようなオリジナルのアプリケーションを作成できます。

http://developer.hatena.ne.jp/ja/documents/blog/apis/atom

この中で「コレクションURI」を取得する事で、URLが取得できます。
しかしこのAPIには以下の制限事項があります。

  • 一度に取得できるURL件数は10件(自分の環境では10件しか取れなかった)のみ。
  • ページ番号のパラメータ(例えばpage=1)を使ったページング形式でURLを取得可能。

更に言うと、atom形式??のxmlが返ってきてしまうので、
自力でxmlをパースするか、atomの取得ライブラリを使う等が必要になりそうです。

このAPIは「はてなID」と「ブログID」が必須で、実行時にbasic認証でAPIキーも要求されます。
従って、はてなブログを運営していない方はこのAPIは利用できません
APIキーはブログの設定の詳細設定タブの中に書いてありました。

各記事の個別はてなブックマーク数を取得する

これでURL一覧が取得できたので、以下を使って各URLのはてブ件数を個別に取得できます。

任意のURLのリストを送信すると、はてなブックマークでの被ブックマーク件数を取得することができるAPIです。APIはXML-RPC APIを用いて実装を行っており、結果は URL と被ブックマーク件数のペアの構造体として返却されます。

http://hatenadeveloper.g.hatena.ne.jp/keyword/ja/bookmark/apis/getcount?kid=87#p4

XML-RPCを使って一気に個別URLのはてブ件数を取得できますが、以下の制限があります。

  • 一度に指定できるURLは50件まで。
  • 同一IPからのアクセスは1秒間に1回まで。

例えば記事数が100件(100URL)の場合、100件 ÷ max50件 = 2回、つまり最低でも2秒かかります。
もし記事数が1000件あったら20秒もかかることになります。

ちなみにtree-tipsでは以下のページで実際このXML-RPCを使ってはてブ数を取得しています。

はてなブログではありませんが、ページ数が100以上あるので、取得するのに3秒かかります。。。
(EHCacheでメモリキャッシュして極力APIを実行しないよう工夫してます)

: 後日談:実際やってみました
実際にやってみて成功したので、ソースを公開しています!!

毎月5万円以上の副収入を確実に稼ぐための堅実なアフィリエイトらくらく講座

毎月5万円以上の副収入を確実に稼ぐための堅実なアフィリエイトらくらく講座

本気で稼ぐための「アフィリエイト」の真実とノウハウ

本気で稼ぐための「アフィリエイト」の真実とノウハウ

アフィリエイトの神様が教える儲けの鉄則50

アフィリエイトの神様が教える儲けの鉄則50