LoginSignup
4
3

More than 3 years have passed since last update.

Splunk Curl App で Qiita のページview数をチェックしてみた

Last updated at Posted at 2020-01-13

概要

Qiita の記事を投稿して20件を超えてきたのですが、過去の自分の記事で何が読まれているのか view数を確認したいと思った時にqiita のマイページからは一気に確認することが出来ない。。 各記事を表示するとオーナーは View数が確認できるのですが如何せん一つずつ確認するしかないのです!

調べてみると Google Analyticsと連携できるみたいで、日々のアクセス数などは確認できたのですが、過去のデータが反映されない。。(つまり view総数は判断できない)

ということで調べてみました。

すると、Qiita APIなるものがあるらしく curl を使って確認しているパイセンがいることがわかりました。
https://qiita.com/kai_kou/items/3f10ce93f4aa3b57b2d0
https://icck.github.io/posts/0009-qiita-curl/

同じことをしてもつまらないので、Splunkを使ってデータを取得して確認してみたいと思います。(特に意味はないです)

Splunk Curl App のインストール

Splunk 上から Curlを実行できるようにするアプリがあります。今回はこれを使ってQiita APIにアクセスしてみます。

Splunk Curl Command
https://splunkbase.splunk.com/app/4172/

アプリのインストール手順は省略させていただきます。

Qiita API の準備

Qiita API が公開されており、記事を確認したり投稿したりできるみたいです。

ここでは、自分の投稿記事にアクセスできるようにトークンを発行します。

アクセストークンの発行
https://qiita.com/settings/tokens/new

image.png

これで、新しいトークンが発行されるので、忘れないようにどこかにコピーして保存してください。
(後からトークンを確認することは出来ないので要注意)

データの取得

早速 Curl SPLを使って、データを取得したいと思います。

| curl  url="https://qiita.com/api/v2/authenticated_user/items?page=1&per_page=100" \
 headers="{'Authorization': 'Bearer <<取得した Tokenを入力>> '}" \
 output=text

(*) output=jsonだとエラーになってしまうので、textで取得しました。

image.png

こんな感じでフィールド抽出もイベントブレークも出来ていない状態のため、データを加工します。

| curl  url="https://qiita.com/api/v2/authenticated_user/items?page=1&per_page=100"  headers="{'Authorization': 'Bearer <<取得した Tokenを入力>>'}"  output=text
| makemv delim="rendered_body" reponse 
| mvexpand reponse
| where (reponse like "%title%")
| rex field=reponse "\"page_views_count\":(?<view>[\w\d]+)" 
| rex field=reponse "\"likes_count\":(?<like>\d+)"
| rex field=reponse "\"title\":(?<title>[\W\w]+),\"updated_at"
| rex field=reponse "\"created_at\":\"(?<create>[\d-]+)"
| rex field=reponse "\"id\":\"(?<id>[0-9a-z]+)"
| table view like title create id

image.png

あれ?? 肝心な view が null値になってる。。 

どうやら、それぞれのページにいかないと view countが取得できないらしく、id 情報を使ってurl 先を変更しないといけないとのこと。。

例えばこんな感じで url のitems の後ろに idを追加する。

| curl  url="https://qiita.com/api/v2/items/6c0d1f46c531a17f8671" headers="{'Authorization': 'Bearer <<取得した Tokenを入力>>'}"  output=json 
| table id title created_at page_views_count likes_count

(*) なぜか、各ページ毎だと output=jsonで取得できました。

image.png

ついに取得

ということで試行錯誤しながら、なんとか一度にページ数を取得することができました。

こちらをコピペして使って頂ければ、同じように確認することができるはず。(トークンだけ変更してください)

| curl  url="https://qiita.com/api/v2/authenticated_user/items?page=1&per_page=100"  headers="{'Authorization': 'Bearer <<取得した Tokenを入力>>'}"  output=text
| makemv delim="rendered_body" reponse 
| mvexpand reponse
| rex field=reponse "\"id\":\"(?<id>[0-9a-z]+)"
| table id
| where isnotnull(id)
| map maxsearches=50 search="| curl  url=\"https://qiita.com/api/v2/items/$id$\" headers=\"{'Authorization': 'Bearer <<取得した Tokenを入力>>'}\"  output=json | table id title created_at page_views_count likes_count"

image.png

感想

レポート機能で毎日取得して保存していけば、アクセス推移がみれて面白そうと思いましたが、それはまたの機会に。

4
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3