Koyfin データ自動取得ツール仕様書
概要
Koyfinの企業別Estimatesページから、複数企業のテーブルデータを自動取得し、CSVファイルとして保存するツール。
技術スタック
- Python
- Selenium WebDriver (Chrome)
- Chrome拡張機能(テーブルコピー用、別途提供)
動作環境
- Windows
入力
企業リスト
Pythonのdictionary形式で渡す:
companies = {
"NVDA": "https://app.koyfin.com/estimates/eac/eq-212q1o",
"AVGO": "https://app.koyfin.com/estimates/eac/eq-8o3iqk",
"AVGO": "https://app.koyfin.com/estimates/eac/eq-hi81x7",
# ... 100社程度
}
- key: ティッカーシンボル(ファイル名に使用)
- value: KoyfinのURL
Chrome拡張機能
- 拡張機能のパスを指定して読み込む
- C:\Users\numbe\Git_repo\chrome-extension-kofyin
- 拡張機能はページ内にコピーボタンを挿入する
- ボタンをクリックするとテーブルデータがクリップボードにコピーされる
- ボタンのセレクタは拡張機能のソースコードを参照
出力
フォルダ構造
output/
└── YYYY-MM-DD_N/ # 例: 2024-12-02_1
├── NVDA.csv
├── AVGO.csv
├── ORCL.csv
└── ...
フォルダ命名規則
{今日の日付}_{連番}- 同日に複数回実行する場合、連番をインクリメント(_1,_2, _3...)
CSVファイル
- 1企業につき1ファイル
- ファイル名:
{ティッカーシンボル}.csv - 内容: クリップボードからコピーしたテーブルデータ
処理フロー
1. 出力フォルダを作成(日付_連番)
2. Selenium起動(Chrome拡張機能を読み込み)
3. 企業リストをループ:
a. URLにアクセス
b. ページ読み込み完了を待機
c. テーブル全体が表示されるようスクロール処理
(バーチャルDOMのため、スクロールしないと全データが取得できない)
d. 拡張機能のコピーボタンをクリック
e. クリップボードからデータを取得
f. CSVファイルとして保存
g. 次の企業へ
4. 完了ログを出力
エラー処理
- 個別企業でエラーが発生した場合:
- エラーログを出力
- その企業をスキップして次へ続行
- 最後にエラーになった企業の一覧を表示
注意事項
スクロール処理が必要
- Koyfinのテーブルはバーチャルスクロール(仮想DOM)を使用
- 表示範囲外のデータはDOMに存在しない
- テーブル全体を取得するには、スクロールしながらデータを読み込む必要あり
- 拡張機能がこの処理を担当している可能性あり(要確認)
待機処理
- ページ読み込み後、適切なsleep/waitを入れる
- クリップボードへのコピー後も少し待機が必要な場合あり
ログイン
- Koyfinへのログインが必要な場合は、手動ログイン後のセッションを使うか、自動ログイン処理を追加
拡張機能について
- 拡張機能のソースコードを別途提供予定
- ボタンのセレクタ、動作仕様はソースコードを参照して実装すること
実行例
# 企業リスト
companies = {
"NVDA": "https://app.koyfin.com/estimates/eac/eq-8o3iqk",
"AVGO": "https://app.koyfin.com/estimates/eac/eq-xxxxx",
}
# 拡張機能のパス
extension_path = "C:/path/to/extension"
# 実行
scraper = KoyfinScraper(extension_path)
scraper.run(companies)
成果物
koyfin_scraper.py: メインスクリプト- 必要に応じてrequirements.txt