Pixiv Encyclopedia Viewer History Extractor

CodeQL Advanced Python Lint Pytest

"web_ui"

Pixiv百科事典(Pixiv Encyclopedia / pixiv百科事典)の記事から、日ごとの閲覧数(view history)を抽出するためのスクリプトです。

English README

An English version of this README is available in README.md.


概要

Pixiv大百科の閲覧履歴は、1週間スパンの周期性(平日/休日)がはっきり表れる実データです。

また、作品のイベントやSNSでのバズによる突発的なスパイクも含まれるため、次のような時系列分析の教材として利用できます。

  • 可視化・平滑化の例
  • 季節性分解の例
  • 予測モデル(ARIMA, Prophet など)のサンプルデータ

⚠️ 非公式ツールです
このツールは Pixiv 公式のものではありません。
利用にあたっては、Pixiv の利用規約・robots.txt を必ず守ってください。


機能

  • 記事タイトル(例: "ブルーアーカイブ")を指定して直接 Pixiv百科事典から取得
  • すでに保存した ローカル HTML ファイル を解析することも可能
  • 標準出力に JSON Lines 形式で出力
    (1 行につき {"date": "...", "count": ...} を 1 レコード)
  • --csv オプションで CSV ファイル にもエクスポート

動作環境

  • Python 3.9 以上
  • 使用ライブラリ:
    • requests
    • beautifulsoup4

使い方

0. Create virtual environment

python3 -m venv env
source env/bin/activate
pip install -r requirements.txt

1. 記事タイトルから取得

python src/extract_viewer_history.py "ブルーアーカイブ"

このコマンドは:

  • https://dic.pixiv.net/a/ブルーアーカイブ にアクセス
  • ページ内 JSON を解析
  • 標準出力に 1 行 1 レコードの JSON を出力します:
{"date": "2025-07-01", "count": 9454605}
{"date": "2025-07-02", "count": 9331510}
{"date": "2025-07-03", "count": 8884117}
...

ファイルに保存したい場合:

python src/extract_viewer_history.py "ブルーアーカイブ" > ブルーアーカイブ.jsonl

2. CSV で保存する

--csv オプションで CSV を同時に出力できます(標準出力の JSON はそのまま)。

python src/extract_viewer_history.py "ブルーアーカイブ" --csv ブルーアーカイブ.csv

出力される CSV の例:

date,count
2025-07-01,9454605
2025-07-02,9331510
2025-07-03,8884117
...

3. ローカル HTML ファイルを解析する

事前にブラウザから HTML を保存してある場合:

python src/extract_viewer_history.py ブルーアーカイブ.html
python src/extract_viewer_history.py ブルーアーカイブ.html --csv ブルーアーカイブ.csv

ブルーアーカイブ.html というファイルが存在すれば、
タイトルではなく ローカルファイル として扱われます。

4. テスト

pip install -r requirements.test.txt
pytest

5. 環境を閉じる

deactivate

制限事項

  • このスクリプトにはアクセス回数制限などは入れていません。
    • 連続アクセスしすぎない
    • 個人利用・検証用途など、常識的な範囲での利用を推奨します。
  • あくまで個人的な解析・研究用途を想定したシンプルなツールです。

ライセンス

  • Apache License 2.0