GMOクリック証券のヒストリカルデータをpythonでダウンロードしてみる
GMOクリック証券ではFXの2007年以降の分足データをダウンロードできます。
データ量が多いのでpythonプログラムを書いて自動化しようと思います。
ログインしないといけないので口座開設必須です。
準備
ブラウザをコントロールするために、seleniumというライブラリでダウンロードしています。
seleniumをインストールしていない場合は次のコマンドを入力。
pip install selenium
seleniumでchromeをコントロールするためにchromeDriverが必要です。
GoogleChromeの設定から使用中のchromeのバージョンを調べて、同じバージョンのchromeDriverを以下からダウンロード。
ダウンロードしたexeファイルはこのpythonファイルと同じフォルダに置きます。
ソースコード
import time
import selenium.webdriver
def seleniumDL():
driver = selenium.webdriver.Chrome('./chromedriver')
driver.get('https://sec-sso.click-sec.com/loginweb/')
time.sleep(3)
user_name_text_box = driver.find_element_by_id('j_username')
user_name_text_box.send_keys("user_id")
password_text_box = driver.find_element_by_id('j_password')
password_text_box.send_keys("password")
driver.find_elements_by_name('LoginForm')[0].click()
time.sleep(3)
for year in range(2007,2023):
driver.get('https://tb.click-sec.com/fx/historical/historicalDataList.do?y=' + str(year))
links = driver.find_elements_by_link_text("DL")
for link in links:
link.click()
time.sleep(3)
seleniumDL()
user_idとpasswordは自分のものに書き換えが必要。
ソースコードの前半はログイン処理、
後半は各年度の全てのリンクを取得し、一つずつクリックしていっています。
サーバーに負荷をかけないようにスリープも忘れずに。
解凍
必要無いかもだけど一応。
def unzip():
import os
#zipの入っているフォルダ名
path = './zip/'
#解凍先フォルダ名
unzip_path = './unzip/'
files = []
zip_files = []
#ディレクトリ内ファイルを列挙する。
for x in os.listdir(path):
if os.path.isfile(path + x):
files.append(x)
for y in files:
if(y[-4:] == '.zip'): #ファイル名の後ろ4文字を取り出してそれが.zipなら
zip_files.append(y) #リストに追加
#解凍
import zipfile
for zip_file in zip_files:
with zipfile.ZipFile(path + zip_file) as existing_zip:
existing_zip.extractall(unzip_path)
return
unzip()
後書き
・seleniumを使わなくてもrequestsを使ってもダウンロードができるそうです。(私はできませんでした…)
・このままだと分足のファイルが大量にできただけなので、それを繋げるプログラムが必要。後で記事を書くかも?
読んでいただきありがとうございました。
コメント
コメントを投稿