見出し画像

noteの分析自動化~ダッシュボードをExcelへ出力(ソースコード公開)

noteのダッシュボードが気になって、数時間おきにチェックしてしまいます。

自分のどの記事が人気なのか分析したいので、Excelに書き出して分析したいといったことはないでしょうか。

今回はPythonというプログラム言語を使って、
自動化しました。

Pythonは触り始めて、まだ1か月ちょっとなので、お作法などわかっていないですが、見よう見まねで作ってみました。

ソースコードはこちらです。

import re
import pandas as pd
from time import sleep

from bs4 import BeautifulSoup

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException

# 結果を格納する配列
export_list = []

# driverのセットアップ
options = webdriver.ChromeOptions()
# options.add_argument('--headless')
options.add_argument('--disable-gpu')
options.add_argument('--user-data-dir=C:\\Users\\ユーザID\\AppData\\Local\\Google\\Chrome\\User Data')
options.add_argument('--profile-directory=Default')

driver = webdriver.Chrome(options=options)
driver.implicitly_wait(5)

# データの取得
baseurl="https://note.com"
url = "https://note.com/sitesettings/stats"

driver.get(url)

# ページがロードされ切るまで待機
WebDriverWait(driver, 30).until(EC.presence_of_all_elements_located)

while True:
  try:
      driver.find_element_by_xpath("//*[@id='__layout']/div/div[1]/div[2]/div/main/div/div[3]/div/div[6]/button/div").click()
      # ページがロードされ切るまで待機
      WebDriverWait(driver, 30).until(EC.presence_of_all_elements_located)
  except:
      break

# ページの読み込み
html = driver.page_source.encode('utf-8')
soup = BeautifulSoup(html, "lxml")

export_list=[]

table=soup.find('table', class_="o-statsContent__table")
print(len(table))
rows=table.find_all('tr')
row=rows[0]
tds=row.find_all('td')

for row in rows:
   tds=row.find_all('td')
   if len(tds) != 0:
       temp = []
       temp.append(tds[0].text.strip())
       temp.append(int(tds[1].text.strip()))
       temp.append(int(tds[2].text.strip()))
       temp.append(int(tds[3].text.strip()))

       export_list.append(temp)
       

df = pd.DataFrame(export_list, columns=["blog_title","total_view","comments","likes"])
df.to_excel("check.xlsx")

実行結果

プログラムを実行すると下記のようなExcelが出力されます。
※ファイル名はcheck.xlsx

画像1

これを毎日取得しておけば、全体ビューがどれだけ伸びたとか、
分析することができそうです。

利用前提

上記のプログラムを実行するにはいくつか準備が必要です。

1.Pythonのインストール
2.Chromeのインストール
3.Seleniumのインストール
4.Chrome driverのインストール
5.ソースコードの下記の部分を修正する 
  options.add_argument('--user-data-dir=C:\\Users\\ユーザID\\AppData\\Local\\Google\\Chrome\\User Data')

6.ChromeであらかじめノートにログインしてChromeを閉じる
※ログインしたキャッシュを使って、ログイン処理をスキップさせるため。

さいごに

Pythonのプログラムを組んでいて思ったのは、
ExcelのVBAなどはExcelファイルごと提供するだけで、
すぐ実行できるのに、Pythonだといろんなモジュールをインストールしないと実行できないので、共有するのが難しいなと感じました。

今回、ソースコードを公開しましたが、実行するまでのハードルが高いんじゃないかと思っています。

今後は実行環境も含めて簡単に共有する方法を調べていきたいなと思います。

関連ノート



この記事が参加している募集

#スキしてみて

524,761件

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