見出し画像

Noteのアクセス分析③(攻め方)


はじめに

Noteのアクセス分析を行うにあたり、Noteから自身の記事の各種データを吸い上げる必要があります。
一旦はAPIを使ってデータを取り込むと決めましたが、本当にそれで行くか、改めて方向性を確認し、データ取り込みの方法を決めたいと思います。

手法の選択

Noteのアクセスデータを取る場合、以下の方法が考えられます。
① Noteの公式ダッシュボードからデータ取り出し
     →Seleniumを利用したWEBスクレイピング
② Noteの非公式APIでのデータ取り込み
  →API(Application Programming Interface)によるデータの受け渡し。

以下に両者の比較表を示します

メリット・デメリット比較

これらを比較した結果、開発効率化のメリットを優先し、やはりAPIでのツール作成を選択することにしました。
※SeleniumもAPIもあんまりわかってないケド、まだAPIのほうがとっつきやすそうに感じたというのが本音です(笑)

まず下調べ

APIを使ってデータを収集するためのファーストステップは、APIのレスポンスがどんなものが返ってくるかを推測しなければなりません。
なんといっても、「Note非公式API」ですから、オフィシャルに使い方が出ているわけではありませんので。

(注意)
「Note非公式API」故、あまり自由に実行することは推奨されていないのだろうなと思います。
これらのAPIを実行するときは、一定時間を空けるなど、サーバの負荷に気を付けることで、迷惑をかけることのないよう注意が必要と思っています。

実際に試してみたこと

そこで、APIの挙動を確認するために以下を使います。
Chromeの拡張機能の一つです。

これを使って、Note非公式API動作の検証をしようと思います。 細かい使い方は割愛しますが、APIを実行するときの各種オプションのアタリをこいつで付けます。

Talend API Tester の実行画面

今回のデータ取得に必要なAPIは以下の通りです。

① 指定ユーザーのフォロー数/フォロワー数取得
自分がフォローする人、自分をフォローする人のカウントを行う。
GET https://note.com/api/v2/creators/ユーザID
上記APIを投げると以下が返ってきました。

API①の実行結果

記事数・マガジン数・フォロー数・フォロワー数が取れていますね。
でも、日付ごとのデータを取るのは難しいみたいな気がします。
日時の情報が、戻ってきた情報内には存在していないようです。したがってこの出力結果から、時間推移をみることはできないかも。

② ログイン用API
API①は、ユーザIDを指定しているが、API③はユーザIDを指定していない。
なのでAPI③を実行する前に、ログイン状態になっている必要があるのではないかと推測しました。ログイン用APIを実行してみることにみます。
POST https://note.com/api/v1/sessions/sign_in

いろいろ調べてみると、POSTするBody部分は以下が濃厚。
・・・・(以下略:POSTコマンドは怖いので自粛)
このAPIを使うとログインも問題なくできるようです。

③ ダッシュボードのPV取得
GET https://note.com/api/v1/stats/pv?
API②実行後、このAPIを実行するものと推測。API③の中には、ログインに関する情報が存在していないからです。
このまま実行すると、戻ってきたエラーメッセージの中でフィルターの設定を求められます。よってフィルタ設定に関する情報を調査する必要があります。

https://note.com/api/v1/stats/pv?filter=all&page=1

試しに上記コマンドを実行すると・・・赤丸のあたりにフィルタ設定に使えそうな記述がいっぱいある。
上の赤丸の中を見ると、なんか日時指定ができそうな雰囲気がプンプン・・

API③の実行例

total_pvやtotal_like、total_commentは、私の総ビュー数・総好き数・総コメント数の雰囲気を醸し出しています。

さらに、上記図の各記事部分を展開すると・・・・
記事毎の読み数・好き数・コメント数が取れているようですね!

API③の実行例の1記事を展開

最後に

各APIのレスポンスがある程度把握できたところで、実際にこの仕組みができるかテストしていきたいと思います。テストコーディングでは、以下のようなグラフが取り出せるところまではできています。
あとは、継続的にデータが取れるようにするための仕組みの作りこみを行っていこうとしています。うまく分析ができるデータの取り出しを進めていきたいと考えます。

Noteはじめてからの総ビュー数と総好き数推移
Noteはじめてからの日別PV数・好き数・コメント数

いいなと思ったら応援しよう!