LoginSignup
1
1

More than 1 year has passed since last update.

Qiita に投稿した記事の VIEW数 、いいねの数 、ストックされた数 を CSV に出力する方法(「Python + Qiita API v2」で作成)(100件以上)

Last updated at Posted at 2022-11-17

前書き

以前、「Qiita に投稿した記事の VIEW数 、いいねの数 、ストックされた数 を CSV に出力する方法(「Python + Qiita API v2」で作成)」で、PythonQiita API v2 を使用して、Qiita に投稿した自分の記事の VIEW数 、いいねの数 、ストックされた数 を CSV に出力する方法を紹介しました。しかし、記事が 100件 を超えると取得できない作りになっていたので、今回は記事が 100件 を超えても取得できるように修正した内容を紹介します。

実行した環境

  • Windows 10(64bit)
  • Python 3.6.4 :: Anaconda, Inc.

100件超え対応後のプログラム

Python のプロラム

Python から Qiita API v2 を使用して、タイトル、 VIEW数 、いいねの数 、ストック数を取得し、標準出力にCSV形式で一覧表示させるプログラム(100件超え対応版)です。

下記プログラムソースのxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxの部分には、自分のアクセストークンで置き換えてください。
アクセストークンは Qiitaページの「設定」-「アプリケーション」-「個人用アクセストークン」から取得可能です。

getview.py
# -*- coding: utf-8 -*-
"""
Created on Thu Nov 17 23:12:00 2022

@author: yasushi
"""

import requests
import json

page = 1
per_page = 100
total_views_cnt = 0
total_likes_cnt = 0
total_stocks_cnt = 0

print("作成日,タイトル,URL,ビューカウント,いいねカウント,ストックカウント")

while True:
    url = 'https://qiita.com/api/v2/authenticated_user/items'
    headers = {"content-type" : "application/json", "Authorization" : "Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}
    params = { "page" : str(page), "per_page" : str(per_page)}
    res = requests.get(url, headers=headers, params=params)
    list = res.json()
    if len(list) == 0:
        break
    for item in list:
        item_id = item['id']
        title = item['title']
        likes_cnt = item['likes_count']
        create_date = item['created_at']
        item_url = item['url']

        total_likes_cnt += likes_cnt

        url = 'https://qiita.com/api/v2/items/' + item_id
        res = requests.get(url, headers=headers)
        json = res.json()
        views_cnt = json['page_views_count']
        total_views_cnt += views_cnt

        url = 'https://qiita.com/api/v2/items/' + item_id + '/stockers'
        res = requests.get(url, headers=headers)
        users = res.json()
        stocks_cnt = len(users)
        total_stocks_cnt += stocks_cnt

        print(create_date + ", " + title + ", " + item_url + ", " + str(views_cnt) + ", " + str(likes_cnt) + ", " + str(stocks_cnt))

    page += 1

print("合計, , , " + str(total_views_cnt) + ", " + str(total_likes_cnt) + ", " + str(total_stocks_cnt))

前回との違いは、while文でループさせ、pageをインクリメントさせているところです。list0件 だった場合、while文を抜けるようにしています。

起動用のbat

インストールされている Python で、先程作成したgetview.pyを呼び出し、結果を日付時刻付きのファイル(viewcount_yyyyMMddHHmmss)にリダイレクトしています。
C:\DK\Anaconda3\envs\tf_env」の部分は、Python をインストールしたディレクトリに置き換えてください。

getview.bat
@echo off
set PY_PATH=C:\DK\Anaconda3\envs\tf_env

set yyyy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
set time2=%time: =0%
set hh=%time2:~0,2%
set mn=%time2:~3,2%
set ss=%time2:~6,2%
set filename=%yyyy%%mm%%dd%-%hh%%mn%%ss%

%PY_PATH%\python getview.py > viewcount_%filename%.csv
pause

実行

上記で作成したgetview.batを実行(ダブルクリック)すると、viewcount_yyyyMMdd_HHmmss.csvが作成されます。

参考

Qiita API v2ドキュメント
Qiita に投稿した記事の VIEW数 、いいねの数 、ストックされた数 を CSV に出力する方法(「Python + Qiita API v2」で作成)


以上

1
1
0

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
1
1