【スクレイピング】日本の全企業の株価(4本値)一覧を取得する

Python

日本の上場企業約3700社の4本値を取得するコードです。

例によって今回も株式投資メモを使います。これだけデータを提供してくれているのはありがたい限りです。以下のコードになります。https://kabuoji3.com/stock/では企業数が変わるので今表示できる最大のページに変えてください。ライブラリはpandasのみでOKです。

import pandas as pd

#https://kabuoji3.com/stock/の最終ページ番号
last_page=34

#jupyternotebook上で5000行まで表示させる
pd.set_option('display.max_rows',5000)

URL='https://kabuoji3.com/stock/?page='

for num in range(1,last_page+1):
    df_part=pd.read_html(URL+str(num))[0] #表を取得
    df=pd.concat([df_part, df])#結合
df= df.reset_index(drop=True)#indexをリセット
df2 = pd.concat([df, df['コード・名称'].str.split(' ',1, expand=True)], axis=1).drop('コード・名称', axis=1)#コード・名称を分割
df2.rename(columns={0: 'コード', 1: '名称'}, inplace=True)#リネーム
df2=df2.iloc[:,[5,6,0,1,2,3,4]]#並び替え
df2= df2.sort_values(by=["コード"], ascending=True)#コードでソート
df2 = df2.reset_index(drop=True)#インデックスをリセット

df2

このコードでdf2で全企業のデータフレームを取得できました。10行だけ表示させます。

コード 名称 市場 始値 高値 安値 終値
0 1301 (株)極洋 東証1部 2903.0 2930.0 2903.0 2916.0
1 1305 ダイワ 上場投信-トピックス 東証ETF 1868.0 1870.0 1865.0 1868.0
2 1306 (NEXT FUNDS)TOPIX連動型上場投信 東証ETF 1845.0 1849.0 1844.0 1845.0
3 1308 上場インデックスファンドTOPIX 東証ETF 1825.0 1829.0 1824.0 1827.0
4 1309 (NEXT FUNDS)ChinaAMC・中国株式・上証50 東証ETF 41600.0 42000.0 41550.0 42000.0
5 1311 (NEXT FUNDS)TOPIX Core30連動型上場投信 東証ETF 822.0 823.0 821.0 823.0
6 1312 小型コア・インデックス連動型上場投信 東証ETF 19940.0 20110.0 19940.0 20110.0
7 1313 サムスンKODEX200上場指数投資信託 東証ETF 3480.0 3540.0 3480.0 3540.0
8 1319 (NEXT FUNDS)日経300株価指数連動型上場投信 東証ETF 333.0 333.0 333.0 333.0
9 1320 ダイワ 上場投信-日経225 東証ETF 27390.0 27430.0 27370.0 27400.0

これで1301からコードごとに4本値を取得できました。

銘柄コード一覧をリストで取得するには次のコードを使ってください。

code_list=df2.コード.values.tolist()
code_list
['1301',
 '1305',
 '1306',
 '1308',
 '1309',
 '1311',
 '1312',
 '1313',
 '1319',
 '1320',
 '1321',....省略

またエクセルに出力する場合にはクリップボードにコピーしてから貼り付けをします。

df2.to_clipboard()

pandasのread_html()を使えば煩雑なコードが不要で表を取得できるのでかなり便利です。データ数が多くなるとエクセルでは重くて使い物にならないのでpandasが使えて損はないです。

コメント

タイトルとURLをコピーしました