株式投資を始めたばかりの方、あるいは既に投資経験がある方でも「毎回、銘柄情報を手作業で集めるのは大変だ…」と感じたことはないでしょうか?特に高配当株など、利回りの高い株を見つけるのは投資のポイントになりますが、毎日最新のデータを確認し、分析するには時間がかかります。
そこで活用したいのが「Pythonを使ったWebスクレイピング」です。Pythonは初心者でも習得しやすいプログラミング言語であり、単純な自動化タスクを行うだけでなく、株式投資のような複雑なデータ収集も可能にします。この記事では、ブラウザを開くことなく、わずか10秒ほどで最新の高配当株情報を自動取得する方法について、具体的な手順を追いながら説明していきます。
Pythonの基本的な操作から、データの取得、Excelへの保存方法まで、詳しく解説しますので、ぜひ最後まで読んでみてください。
\即戦力のスキルを身につけるプログラミングスクール/
簡単30秒!まずは無料相談!
Python - 初心者にもおすすめのプログラミング言語
Pythonは、現在世界中で最も人気のあるプログラミング言語の一つです。その理由として挙げられるのが、シンプルな構文と多様なライブラリです。特に初心者にとって、Pythonのシンプルなコードは非常に理解しやすく、最初の一歩を踏み出すには最適です。
さらに、Pythonにはデータ分析、機械学習、Web開発、さらには自動化といった幅広い分野で活用できるライブラリが豊富にあります。今回の記事で紹介する「Webスクレイピング」も、Pythonを使えば簡単に始めることができます。
Webスクレイピングとは、ウェブページからデータを自動で取得する技術です。これにより、手作業でのデータ収集の手間を省くことができ、投資のための情報を短時間で取得し、効率的に分析を進めることが可能になります。
Webスクレイピングの基本とその活用方法
まず、Webスクレイピングとは何かをもう少し詳しく見ていきましょう。Webスクレイピングは、特定のウェブページにアクセスし、必要なデータをプログラムを通じて抽出・取得する手法のことを指します。この技術を使うと、手作業でページを確認し、データをコピー・ペーストする必要がなくなります。
株式投資の分野では、特に高配当株や特定の財務指標に基づいた銘柄を見つけるために、この技術が非常に役立ちます。たとえば、Yahoo Financeのような金融情報サイトには、さまざまな株の情報が一覧で表示されていますが、それらを一つずつ確認するのは時間がかかります。Webスクレイピングを使えば、これらのページから配当利回りやPER、PBRなどの情報を一度に取得し、Excelファイルとしてまとめて管理することが可能です。
スクレイピングで使用するライブラリの紹介
Webスクレイピングを行うためには、Pythonで使える便利なライブラリを活用します。今回は、次のライブラリを使用します。
- pandas
pandasはPythonでデータを処理・分析するための非常に強力なライブラリです。特に、データフレームという表形式のデータ構造を扱うのに優れており、スクレイピングして取得したデータをきれいに整理することができます。 - openpyxl
openpyxlは、ExcelファイルをPythonから操作できるライブラリです。スクレイピングしたデータをExcelに書き出し、保存するために使用します。 - re(正規表現ライブラリ)
reはPython標準のライブラリで、正規表現を使った文字列の操作が可能です。今回は、スクレイピングしたデータの中から銘柄コードや市場情報を正確に取り出すために使用します。
これらのライブラリを活用することで、効率的にデータを処理し、最終的な出力をExcelファイルに保存することが可能になります。
実際のスクレイピングコードの解説
それでは、具体的なPythonコードを見ていきましょう。このコードは、Yahoo Financeから高配当株の情報をスクレイピングし、Excelファイルとして保存するものです。5ページ分のデータを取得し、自動的に整理します。
まず、ライブラリをインストールする必要があります。ターミナルやコマンドプロンプトに次のコマンドを入力して、必要なライブラリをインストールしましょう。
pip install pandas openpyxl
次に、以下のPythonコードを実行します。
import pandas as pd
import re
# 名称・コード・市場を分割する関数
def mks_re(x):
import pandas as pd
import re
# 名称・コード・市場を分解する関数
def mks_re(x):
mks_d = re.search(r'\d{4,}', x) # 銘柄コードが4桁以上の数字であると仮定
if mks_d:
dks_c = mks_d.group() # コードを抽出
dks_m = x[:mks_d.start()].strip() # 名称を抽出
dks_s = x[mks_d.end():].strip() # 市場情報を抽出
return dks_m, dks_c, dks_s
else:
return x, None, None # コードが見つからない場合は名称のみを返す
# データフレームの名称・コード・市場列を分割
def bunkatu(df):
df[['名称', 'コード', '市場']] = df['名称・コード・市場'].apply(lambda x: pd.Series(mks_re(x)))
# メイン処理
dfa = pd.DataFrame()
# 5ページ分のデータを取得
for p in range(1, 6):
try:
url_kh = f'https://finance.yahoo.co.jp/stocks/screening/highdividend?page={p}'
dfs = pd.read_html(url_kh)
df = dfs[0]
bunkatu(df)
dfw = df.reindex(columns=['名称', 'コード', '市場', '配当利回り', 'PER', 'PBR', 'ROE', '自己資本比率', '時価総額', '最低購入代金'])
dfa = pd.concat([dfa, dfw], ignore_index=True)
except Exception as e:
print(f"Error occurred while processing page {p}: {e}")
# Excelファイルに保存
try:
dfa.to_excel('優良高配当株.xlsx', index=False)
print("データが正常にExcelに書き出されました。")
except Exception as e:
print(f"Excelへの書き出し中にエラーが発生しました: {e}")
コードの詳細な解説
このコードをステップごとに詳しく解説していきます。
1. 名称・コード・市場の分割
コードの最初の部分では、スクレイピングで取得した「名称・コード・市場」が一つの文字列として結合されているため、これを正規表現を使って3つの部分に分割しています。たとえば、「トヨタ自動車 7203 東証」というデータを「トヨタ自動車」「7203」「東証」というように分けます。この処理を行うことで、後のデータ操作が簡単になります。
2. データフレームへの適用
次に、スクレイピングしたデータが格納されたデータフレームに対して、上記の関数を適用します。これにより、元々一つだった「名称・コード・市場」列が3つの列に分割され、データが整理されます。
3. データの取得
ループを使って、Yahoo Financeの高配当株情報の5ページ分のデータを順次取得します。取得したデータは、毎回結合されて1つの大きなデータフレームにまとめられます。この処理を行うことで、複数のページから効率よくデータを収集できます。
4. データのExcelへの書き出し
最後に、取得したデータを「優良高配当株.xlsx」という名前のExcelファイルとして書き出します。これで、スクレイピングしたデータがExcelファイルに保存され、後で確認したり分析したりすることができます。
まとめ
ここまで、Pythonを使ってYahoo Financeから高配当株情報を自動で取得し、Excelファイルに保存する方法を解説してきました。この手法を使えば、毎回ブラウザを開いて情報を確認する手間を省き、わずか10秒ほどで最新のデータを手元に集めることが可能です。
投資家にとって、最新の情報を効率的に管理することは重要な成功要因の一つです。このように、Webスクレイピングを活用することで、日々の株情報の収集を自動化し、投資判断に役立てることができます。
スキルをさらに磨いて副業やキャリアアップを目指そう
Pythonを使ったWebスクレイピングは、株式投資だけでなく、さまざまな分野で活用できます。今回の方法でPythonの基本を学んだ方は、さらにステップアップして、データ分析や機械学習、Web開発など、幅広い分野での応用を検討してみましょう。
特に、プログラミングのスキルを磨くことで、副業としてプログラミング案件を受けることができたり、キャリアアップに繋がるチャンスも広がります。独学での学習も可能ですが、効率的にスキルを身につけるためには、プログラミングスクールの活用もおすすめです。スクールでは専門的なカリキュラムが提供されており、より短期間でのスキル習得が期待できます。
\即戦力のスキルを身につけるプログラミングスクール/
簡単30秒!まずは無料相談!
最後に
Pythonによる自動化は、あなたの投資ライフを大きく変える可能性を秘めています。この記事を参考に、ぜひPythonを使った株情報の自動取得に挑戦してみてください。そして、さらにスキルを磨き、次なるステップに進んでいきましょう!
コメント