我尝试使用Python获取了关于Qiita投稿文章的浏览量

简而言之

为了使基础设施员能够尽量理解应用程序员的工作,我发布了一些在Qiita上进行的实践内容。由于开始在意发布的文章的浏览量等数据,所以我创建了一个可以批量获取所有团队成员的Python程序。由于发布数量增多,获取浏览量需要花费很长时间,所以我添加了进度条显示功能。

执行环境 (shí

苹果操作系统 Big Sur 11.1
Python 3.8.3

获取个人令牌

请按照以下步骤获取Qiita账户的个人访问令牌。

    1. 使用个人账户登录

 

    账户 → 设置 → 应用程序 → 个人访问令牌 → 发布令牌

运行程序

import time
import argparse
import requests
import json
from tabulate import tabulate
from tqdm import tqdm

# メンバー全員の投稿アカウント毎の個人トークンの定義
tokens = {
    "yamahiro": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "himorishuhei": "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy",
    "Alex-hiro": "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz",
    'turupon': "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
}

# https のパラメータ情報
params = {
    "page": "1",
    "per_page": "100",
}


# アカウント毎に投稿した記事のListを取得
def GetPostList():

    # 投稿アカウントでの取得
    cnt = 0
    for (key, token) in zip(tokens.keys(), tokens.values()) :

        # https のヘッダー情報 with 個人トークン
        print("\n ■---■---■ 投稿者:{}".format(key))
        headers = {
            "Authorization": "Bearer " + token
        }

        # 個人トークンを利用してのその個人の投稿記事情報の取得
        res1 = requests.get('https://qiita.com/api/v2/authenticated_user/items', params=params, headers=headers)
        jsonlist = json.loads(res1.text)

        # 投稿記事毎View数の取得
        cnt += GetView(jsonlist, headers)

    return cnt


# 投稿した記事のView数の取得
def GetView(jsonlist, headers):

    # 取得する情報のキーと値の準備
    item_key=['User', 'url', 'page_views_count', 'likes_count', 'created_at', 'updated_at', 'Title']
    item_value=[]
    se=[]

    # 投稿記事毎の情報の取得
    # プログレスバーで進捗状況を表示
    for i, item in enumerate(tqdm(jsonlist)):

        # その記事情報の取得
        se.clear()
        res2 = requests.get('https://qiita.com/api/v2/items/' + item['id'], headers=headers)
        rec = json.loads(res2.text)

        # アカウント名、記事URL、View数、いいね数、作成日、更新日、記事タイトル 情報の取得
        item_value.append([rec['user']['id'], rec['url'], rec['page_views_count'], rec['likes_count'], rec['created_at'], rec['updated_at'], rec['title']])


    # json形式への変換
    rows = [dict(zip(item_key,item)) for item in item_value]

    # 取得情報の表示
    print(tabulate(rows, headers='keys'))
    print("\n   ---> 投稿数:{}\n".format(len(rows)))

    return len(rows)


if __name__ == '__main__':    
    parser = argparse.ArgumentParser(description='Qiitaの投稿記事に対するView数を取得する')
    args = parser.parse_args()

    start = time.time()
    cnt = GetPostList()
    generate_time = time.time() - start

    print("")
    print(" Qiita Post 総数 : " + str(cnt))
    print("  取得時間:{0}".format(generate_time) + " [sec] \n")

程序执行

## 実行結果
$ python QiitaAPI_GetView.py                                          

 ■---■---■ 投稿者:yamahiro
100%|██████████████████████████████████████████████████████████████████████████████████████████████| 12/12 [00:03<00:00,  3.65it/s]
User      url                                                      page_views_count    likes_count  created_at                 updated_at                 Title
--------  -----------------------------------------------------  ------------------  -------------  -------------------------  -------------------------  ---------------------------------------------------------------------------------------
yamahiro  https://qiita.com/yamahiro/items/dfbdb2de55812d6b2506                 334              0  2020-12-20T05:37:36+09:00  2021-02-21T15:38:50+09:00  Cloudianオブジェクトストレージ/マルチスレッドによるファイルのアップロード
    :
yamahiro  https://qiita.com/yamahiro/items/7b8a11c773106b641795                 859              1  2020-12-18T05:38:27+09:00  2021-02-21T15:27:15+09:00  [Cloudian #1] AWS SDK for Python(boto3)で、オブジェクトストレージにアクセスしてみる

   ---> 投稿数:12


 ■---■---■ 投稿者:himorishuhei
100%|████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:00<00:00,  4.69it/s]
User          url                                                          page_views_count    likes_count  created_at                 updated_at                 Title
------------  ---------------------------------------------------------  ------------------  -------------  -------------------------  -------------------------  --------------------------------------------
himorishuhei  https://qiita.com/himorishuhei/items/cb53613b49846f53fb91                 174              0  2021-10-21T11:16:11+09:00  2021-10-21T11:20:50+09:00  Azure Databricksにおける日本語文字化けの対処
    :
himorishuhei  https://qiita.com/himorishuhei/items/201f7de74670aee85c6d                 718              0  2021-05-19T10:42:22+09:00  2021-05-19T10:42:22+09:00  Azure仮想マシン料金を計算してみた

   ---> 投稿数:4


 ■---■---■ 投稿者:Alex-hiro
100%|████████████████████████████████████████████████████████████████████████████████████████████████| 5/5 [00:01<00:00,  4.35it/s]
User       url                                                       page_views_count    likes_count  created_at                 updated_at                 Title
---------  ------------------------------------------------------  ------------------  -------------  -------------------------  -------------------------  -----------------------------------------------------------------
Alex-hiro  https://qiita.com/Alex-hiro/items/7f096462f4622c0ea24d                 242              2  2021-11-10T16:17:53+09:00  2021-11-10T16:17:53+09:00  Confluent Platformのデモを試してみる(Kafkaコネクト編)
    :
Alex-hiro  https://qiita.com/Alex-hiro/items/3769d6052f216791ded4                 408              5  2021-04-20T14:44:20+09:00  2021-09-01T20:07:10+09:00  Azure Kubernetes Service(ASK)上でConfluent Platformを構築してみる

   ---> 投稿数:5


 ■---■---■ 投稿者:turupon
100%|██████████████████████████████████████████████████████████████████████████████████████████████| 73/73 [00:26<00:00,  2.71it/s]
User     url                                                     page_views_count    likes_count  created_at                 updated_at                 Title
-------  ----------------------------------------------------  ------------------  -------------  -------------------------  -------------------------  -------------------------------------------------------------------------------------------------------------------------------------------------
turupon  https://qiita.com/turupon/items/b69d867e3e05b05e307e                 299              0  2021-11-12T15:11:44+09:00  2021-11-12T15:11:44+09:00  Python の DataFrame を利用してデータ抽出変換をしてみました (1レコード → 複数レコード)
    :
turupon  https://qiita.com/turupon/items/f458e37f200185843420                 573              0  2020-12-23T11:51:18+09:00  2020-12-24T11:26:42+09:00  オブジェクトストレージ Cloudian/S3 にあるJSON形式のデータから特定のデータを抽出してみます

   ---> 投稿数:73


 Qiita Post 総数 : 94
  取得時間:35.04356503486633 [sec] 

总结

现在可以随时查看所有成员发布的文章的浏览量了、、、、、

bannerAds