Pythonでリアルタイムな株価を取得する方法

株式投資をしている人や経済動向を把握しておきたい人にとって、株価のチェックは大切な日課の１つになっているかもしれません。しかしそれを毎日続けるのは、かなりの手間ですよね？「何だか面倒だな」と感じてしまう人も多いはず。そんな時に、自動でリアルタイムに株価がチェックできれば便利だと思いませんか？

そこで本記事では、Pythonというプログラミング言語を使って、株価をリアルタイムに取得する方法をご紹介いたします。ぜひ最後までご覧くださいね！

<h2>Pythonで株価を取得するメリットは？</h2>
まずは、Pythonを使って株価を取得することのメリットをいくつか挙げてみましょう。以下に挙げたメリットが欲しいと思う方は、ぜひ以降に紹介するPythonを使った株価のリアルタイム取得方法をお試しください。

**Pythonで株価を取得するメリット:**
<ul>
<li>Pythonにはデータ取得や分析に必要な機能が非常に豊富なので、やりたいことを比較的簡単に実現しやすい</li>
<li>データの収集や整形、保存・出力までの工程をすべて自動化することができる</li>
<li>Pythonは多くのケースで利用されている人気の言語なので、Web上でサンプルコードや使い方に関する情報を見つけやすい</li>
<li>各種ライブラリは完全無料で利用できる</li>
</ul>

<h2>リアルタイムな株価を取得できるPythonのライブラリは何かあるの？</h2>
それではここで、Pythonで株価取得をする場合に利用できる代表的なライブラリをいくつかご紹介します。

**Yfinance**
 [Yfinance](https://pypi.org/project/yfinance/)とは、Yahoo! financeから株価情報などを取得するためのツールです。Pythonのライブラリとして、オープンソース化されています。
また、Yfinanceは柔軟性が高く、Pandasデータフレーム形式でデータを取得できるため、Pythonを使用したデータ分析や機械学習プロジェクトとの親和性が高いことが特徴です。

**Alpha Vantage**
[Alpha Vantage](https://www.alphavantage.co/)とは、株価、為替レートなどの金融マーケットデータのAPIを提供するサービスです。API経由でリアルタイムに各種データをプ取得することができます。
Alpha Vantageには料金プランが複数用意されており、プランに応じて一定期間のAPIのリクエスト数に制限が設けられています。

Freeプランでは、無料で株価データの取得は可能ですが、データは過去のものしか取得できません。また、1日25リクエストと制限されているため、実用化は難しいと言えます。
Premiumプランでは、リクエスト上限が分単位に緩和され、より多くのデータの取得が可能です。しかし、安いプランの場合は15分の遅延データが発生する、オプション取引のデータを扱えないなどの違いがあります。

**pandas-datareader**
[pandas-datareader](https://pandas-datareader.readthedocs.io/en/latest/)とは、Web上に散らばっている色々な情報を、APIを介して手軽に取得することが出来るようになる便利なツールです。

pandasという名称がついている通り、Webページから取得した株価や為替レートなどの情報はpandas.DataFrame形式でとして出力できるので非常にわかりやすい点も特徴です。

pandas-datareaderは基本的に別のデータ提供元（API）を利用してデータを取得する仕組みになっています。上記のYahoo! Finance やAlpha Vantageなどです。サードパーティAPIに依存しているため、提供元のサービス停止や仕様変更があると、データ取得に影響が出るリスクがあります。

**Quandl**
[Quandl](https://data.nasdaq.com/publishers/QDL)とは、金融や経済に関する様々なデータを提供してくれるサービスです。取得したデータのグラフ表示や、CSVなどの特定のフォーマットで出力させることも可能となっています。

一部データは有料の法人アカウント向けとなっていますが、ほとんどのデータは無料で利用することができます。またデータを抽出するためのAPIも提供されているので、誰でもすぐに使い始めることが可能です。

<h2>Pythonでリアルタイムな株価を取得する流れ・方法は？（サンプルコード付き）</h2>
さて、それではここからは、実際にPythonでリアルタイムな株価を取得する方法をご紹介していきます。今回は例として“yfinance”ライブラリを使用して解説していきたいと思います。

**前準備：Python・yfinanceのインストール**

1.[公式ページ](https://www.python.org/)からPythonをダウンロードし、インストールを行います。
コマンドプロンプトで以下のようにバージョンが表示されていればインストール完了です。

今回はPython 3.9の環境で検証を行いました。
> python --version
Python 3.9.0


2.続いてyfinanceをインストールします。下記のコマンドを実行します。

`pip install yfinance`

3.数値計算やグラフの描画を行う場合は、他のライブラリもインストールしておきましょう。

`pip install pandas numpy matplotlib`

**株価取得用のプログラムの作成**
1.Windowsでテキストエディタを起動します。
標準インストールされているメモ帳でも、サクラエディタ等のエディタソフトでも構いません。

2.下記のサンプルコードをコピペします。
今回のサンプルコードでは、株価の取得ターゲットをGoogle(銘柄コード：GOOGL)としています。

サンプルコード:
```

import datetime
import pandas as pd
import numpy as np
import yfinance as yf
import matplotlib.pyplot as plt

#ターゲットには複数銘柄も指定可能です
target = "GOOGL"

#1日毎に5日間データを取得します
data = yf.download(target , period='5d', interval = "1d")
print(data)

```
注意点として、periodには['1d', '5d', '1mo', '3mo', '6mo', '1y', '2y', '5y', '10y', 'ytd', 'max']の日付に対応しており、それ以外の日数ではエラーとなります。

同様に、intervalも[1m, 2m, 5m, 15m, 30m, 60m, 90m, 1h, 1d, 5d, 1wk, 1mo, 3mo]のいずれかにする必要があります。

3.テキストファイルを、◯◯.pyといった感じに、拡張子が“.py”となるように保存します。
今回は「test.py」としました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/ac34d30b-3675-9751-308a-efdaa4843cc1.png)


本コードのtargetを変更することで他の企業の株価も取得することができますよ。
例えば、日本の銘柄で「オリエンタルランド」の株価を取得したい場合は、以下のように修正します。

target = "4661.T"
TはYahoo! Financeで使用されている東京証券取引所を表しています。

**作成したプログラムの実行**
1.コマンドプロンプトを立ち上げます。

2.先程作成したプログラムファイルのあるディレクトリへ移動します。
``> cd <ディレクトリパス名>``

3.「python ◯◯.py」といった感じに入力することで、作成したプログラムを実行することができます。
test.pyの場合、以下を入力します。
``> python test.py``

結果の確認
以下のような結果が得られれば成功です。
コマンド実行から5秒ほどで結果が返ってきました。
```
> python test.py
[*********************100%***********************]  1 of 1 completed
Price            Close        High         Low        Open    Volume
Ticker           GOOGL       GOOGL       GOOGL       GOOGL     GOOGL
Date
2024-12-27  192.759995  195.320007  190.649994  194.949997  18891400
2024-12-30  191.240005  192.550003  189.119995  189.800003  14264700
2024-12-31  189.300003  191.960007  188.509995  191.080002  17466900
2025-01-02  189.429993  192.000000  187.500000  190.649994  20370800
2025-01-03  191.789993  193.210007  189.979996  191.369995  18582000
```
各項目の意味は次のとおりです。
| カラム      | 説明|
| ----------- | ----------- |
| Close   | 終値      |
| High  | 高値       |
Low	| 安値
Open	| 始値
Volume	| 出来高
Ticker	| 銘柄
Date| 日付

これでPythonによる株価データの取得はできました。

ここから更に、自身好みにデータや銘柄、グラフ化、定期実行のコードをカスタマイズしていくことになります。また、今回のように自分のPC環境で定期実行する場合はWindowsのタスクスケジューラの設定も必要です。

<h2>Pythonなしでリアルタイムな株価を取得するする方法はあるのか？</h2>
ここまでで「プログラミングするのって面倒…」と思った人もいるかもしれません。
そこでここからは、プログラミング不要で株価情報を取得する方法をご紹介します。

**Octoparseの自動検出機能で株価データを取得する**

1. [Octoparseの公式サイト](https://www.octoparse.jp/)にアクセスし、ツールをダウンロードします。インストールが完了したらツールを起動します。

2.Octoparseを起動し、検索ウィンドウからスクレイピングしたい株価が掲載されているWebページを入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/496b884b-224b-26e0-3a12-cd2370680c2e.png)


3.Webページが開いたら、「操作提案」上の「ウェブページのデータを自動検出」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/b381b184-171f-390c-49a9-b6449e762bd8.png)


4.データプレビューで抽出したデータを確認し、「ワークフローを生成」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/dd1a198e-14f7-3327-758f-3b17e234b24e.png)


**Octoparseでスケジュール実行を設定しリアルタイムな株価データを取得する**
1.Octoparseのダッシュボード画面を開き、設定したいタスクの右にある「もっと」をクリックして、「クラウド抽出」→「実行スケジュールを設定」へ進みます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/9d73d167-9bc6-257d-0535-a1f80ddc56f1.png)


2.タスクを実行する頻度を設定します。実行の曜日や日時など細かく設定することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/9138a313-1b6f-36ee-0fe6-735ccb4aa891.png)

3.設定が完了したら、画面右下の「スケジュール起動」をクリックすれば操作完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/047d2f9f-9013-a778-db1e-06b5ea878154.png)


4.後は、先に説明した株価データの取得を実行する際に、作成したスケジュールを指定すれば、スケジュールに従ってリアルタイムな株価データの取得が行われます。

<h2>Octoparseで株価データを取得するメリット</h2>
Octoparseを使って株価を取得すると何が良いのでしょうか。最後に、Octoparseを利用するメリットをご紹介します。

**1.カスタマイズ性**
Octoparseは株価データ以外にも様々なWebサイトのスクレイピングが可能です。
企業のプレスリリースページやX（旧Twitter）の分析も簡単にできます。
これにより、投資判断や市場戦略を多角的にサポートします。

**2.コスト効率**
今回ご紹介したPythonなどのプログラミングスキルを学習してスクレイピングを実装する場合と比べて、圧倒的に短期間かつ低コストでデータ取得が可能です。
また、Octoparseではクラウド抽出機能により、自分のPCスペックに関わらず大量のデータを取得・保管できます。

このため、費用対効果を最大化できる選択肢と言えます。

<h2>まとめ</h2>
いかかでしょうか？Pythonでリアルタイムに株価データを取得する方法についてご紹介してきました。Pythonの一般的なライブラリを利用することで、誰でも自作で株価データ取得のプログラムを作成できるんでしたね。

さらにプログラミングが苦手な方も、[Octoparse](https://www.octoparse.jp/template)というツールを活用することで、数クリックで簡単に、任意のスケジュールで株価データの取得を行うことができます。面倒なプログラミングは不要なので、ぜひこの機会にお試しくださいね！

元記事：https://www.octoparse.jp/blog/get-real-time-stock-prices-by-python