読者です 読者をやめる 読者になる 読者になる

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

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

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

はてなブログ WEB 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.countAPI エンドポイントにクエリパラメータ 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です。APIXML-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を実行しないよう工夫してます)

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

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

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

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

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