前提・実現したいこと
スクレイピングで特定銘柄のCSV株価データを2005年から直近分までダウンロードすることが実現したいことです。以下のウェブサイトを参考に全銘柄のダウンロードのコードは作成しました。
https://www.kbm360.com/?p=278
その一方で、上場企業全社を対象とすると、3,600社以上のデータとなりデータが多すぎるため、対象の銘柄を限定したいと考えています。必要な約250社のデータに限定してデータをダウンロードしたく思います。具体的には、2753、1930、4769、8023、9027、7222、9377、1941、8922、2108等になります。可能であれば、上記以外の約240社も含めてダウンロードの対象となる全銘柄をコードに記載出来ればと考えています。
発生している問題・エラーメッセージ
末尾の以下のコードの通り、1301から9998をrangeとして指定しているため、例えば1302に該当がない場合でも順繰りにファイルの有無を確認しています。また、全ての上場企業の該当ファイルをダウンロードしているため、相当な時間がかかります。(およそ100時間)
download_stock_csv(range(1301,9998),range(2005,2021))
該当のソースコード
Python
1from selenium import webdriver 2from selenium.common.exceptions import NoSuchElementException 3import time 4 5def download_stock_csv(code_range,year_range): 6 for code in code_range: 7 try: 8 for year in year_range: 9 url = 'https://kabuoji3.com/stock/{0}/{1}/'.format(code,year) 10 driver.get(url) 11 12 try: 13 driver.find_element_by_name("csv").click() 14 time.sleep(3) 15 driver.find_element_by_name("csv").click() 16 except NoSuchElementException: 17 print("no data") 18 pass 19 time.sleep(1) 20 21 except NoSuchElementException: 22 print("no data") 23 pass 24 time.sleep(3) 25 26download_stock_csv(range(1301,9998),range(2005,2021)) 27
試したこと
「Pythonクローリング&スクレイピング」「Python2年生スクレイピングの仕組み」「Automate the Boring Stuff with Python」の関連しそうな箇所を確認しましたが、解決には至りませんでした。
補足情報(FW/ツールのバージョンなど)
Selenium、chromedriverは以下でインストール済みです。
!pip install selenium
!pip install chromedriver-binary==81.0.4044.69
回答1件
あなたの回答
tips
プレビュー