Seleniumを使った全銘柄時系列CSVデータの自動ダウンロード
株とPython─自作プログラムでお金儲けを目指す本 (技術書典シリーズ(NextPublishing))
- 作者: 宮部保雄
- 出版社/メーカー: インプレスR&D
- 発売日: 2018/12/28
- メディア: オンデマンド (ペーパーバック)
- この商品を含むブログを見る
先日購入した「株とPython―自作プログラムでお金儲けを目指す本」をゆっくり読んでいます。
2.4.1「過去のデータを一括取得」でseleniumを使ったYahoo!ファイナンスVIP倶楽部から全銘柄の時系列CSVデータを 自動ダウンロードする方法について説明されています。
本の中ではFirefoxをブラウザに使用していましたが、Chrome向けにコードを書き換えてみました。 銘柄コードのrangeについても、全銘柄を対象に変更しています。
なお、オリジナルのコードは下記から入手できます。 github.com
以下が書き換えたコードです。実行する場合は自己責任でお願いします。
# -*- coding: utf-8 -*- from selenium import webdriver from selenium.common.exceptions import NoSuchElementException import time def download_stock_csv(code_range, save_dir): options = webdriver.ChromeOptions() prefs = {"download.default_directory" : save_dir} options.add_experimental_option("prefs", prefs) driver = webdriver.Chrome(options=options) driver.get('https://www.yahoo.co.jp/') input('After login, press enter: ') for code in code_range: print(code) url = 'https://stocks.finance.yahoo.co.jp/stocks/history/?code={0}.T'.format(code) driver.get(url) try: driver.find_element_by_css_selector('a.stocksCsvBtn').click() except NoSuchElementException: print("Exception.") pass time.sleep(5) if __name__ == '__main__': import os download_stock_csv(range(1301, 9998), os.getcwd())
全銘柄のダウンロードには7時間程度かかりました。ファイルサイズはTotal 710MB程度になります。
データが入手できたので、次はSQLiteに格納したいと思います。