見出し画像

【Tips】[python]note APIを使って過去の投稿記事の情報を取得する

■ note API v2

 noteには非公式ですがAPIがあるようです。こちらの記事にまとめてあったので参考にさせて頂きました。

 ただ非公式なので仕様が変更される可能性がある事と、悪い事や攻撃などに使わないようにしてくださいね、という事だけ注意してください。利用する場合は自己責任でお願いします。

■ pythonで過去の投稿記事の情報を取得

 年末も近いという事で、そろそろ今年のまとめを書きたいなぁと思っているような気分だったので、noteのAPIを使って自分の過去の投稿記事に関する情報を集めるpythonスクリプトを書きましたので紹介します。

 今回集めた情報はこちらです。

・記事のタイトル
・投稿日時
・ハッシュタグの数
・ハッシュタグ一覧

 さすがにアクセス数などはプレミアムコンテンツにもなっているので掲載されていないようでした。ただダッシュボードから全期間アクセス数・コメント数・スキ数を取得して、Excelに貼って今回の結果のCSVとタイトルでVLOOKUPをすれば繋げられそうです。

■ アウトプットのCSVファイル

 アウトプットはこんな感じのCSVです。どうやら過去251記事まで遡って取得可能なようです。(既に300記事を超えているので足りなかった。。。orz)

画像1

固定の記事が1番上に来て、あとは更新順で新しいものから並んでいます。

簡単に各列の説明です。

タイトルは記事のタイトルですね。そのままです。

記事のキーは、記事にユニークなもので、そこから本文を引っ張ってきたりコメントを引っ張ってきたりすることができるようなので念のため取っておきました。

投稿日時は投稿日時ですね。修正などがある場合は最初に公開された日時のようです。

タグの数はその記事についているハッシュタグの数です。

タグの一覧には、tag_数字としてタグを横に並べています。CSVの列数は、取得した全記事の最大の列数になっていると思います。(連番が0始まりなのはご愛嬌ということで。)

■ ソースコード

 pythonで書いたソースコードはこんな感じです。ユーザー名のところをクリエイターページのアカウント名に設定してみてください。

import requests, json
import pandas as pd

res=[]

# 記事一覧(最大251記事。1ページあたり6記事)
for page in range(1,43):

   ### ユーザー名(XXXXXX)を変更してください。 ###
   url="https://note.com/api/v2/creators/XXXXXX/contents?kind=note&page="+str(page)
   # APIの取得
   res_dict=requests.get(url).json()
   
   for i in range(len(res_dict["data"]["contents"])):
       l = res_dict["data"]["contents"][i]
       title   = l["name"]      # タイトル
       key     = l["key"]       # key
       publish = l["publishAt"] # 投稿日時
       tags    = [ i["hashtag"]["name"] for i in l["hashtags"] ] # タグ一覧
       print("page = ",page,"contents = ",i,"title = ",title)
       res.append([title,key,publish,tags])

# Pandasで整形       
df=pd.DataFrame(res)
df["hashtags"] = df[3].apply(len) # ハッシュタグ数
tags=df[3].apply(pd.Series)
tags.columns=[ "tag_"+str(x) for x in tags.columns ]

df=pd.concat([df,tags],axis=1)
df=df.rename(columns={0:"title",1:"key",2:"publishAt"})
del df[3]

# CSV出力
df.to_csv("note_summary.csv",encoding="cp932")

 これでnote_summary.csvというCSVに先ほどのアウトプットのような結果が出てくるハズです。(あまり他の環境で検証はできてないので、動かなかったらすみません。。)

■ 実行方法

pythonの実行方法が分からないという方は、先ほど上で紹介した方のnoteのGoogle Colabを利用する方法を試してみてください。(pandasが必要なので、Anacondaをインストールするのがおススメですが、上記のGoogle Colabを利用する方法でも簡単にできました。)

 上記の方法でやってみたら確かに動きました!ノートブックを新規作成して、先ほどのコードをコピペして、ユーザー名のところを変更して実行すると、タイトルの羅列がばーーーーっと流れてCSVが出てきました!!すげぇ、python簡単!!

画像2

ということで、ダッシュボードによるアクセス分析にハッシュタグや投稿時間の情報が付け加えられそうですね(^-^) 

今度は記事の内容を取得する方法についても調べてみようと思います。

それでは(^-^)

この記事が気に入ったらサポートをしてみませんか?