株式情報(1400銘柄)をcsvデータに保存しています。
処理自体はしっかり動くのですが、処理時間がすごく長いです。
プログラミングの勉強を始めたばかりで、無駄なことを書いている可能性があると思います。
python
1from selenium import webdriver 2from selenium.webdriver.support.ui import WebDriverWait 3from selenium.webdriver.support import expected_conditions as EC 4from selenium.webdriver.common.by import By 5from selenium.webdriver.chrome.options import Options 6from selenium.webdriver.common.action_chains import ActionChains 7import chromedriver_binary 8import time 9import traceback 10import pandas as pd 11 12stratTime = time.time() #プログラムの開始時刻 13 14options = Options() 15options.binary_location = '/Applications/Chromium.app/Contents/MacOS/Chromium' 16options.add_argument('--headless') 17driver = webdriver.Chrome(options=options) 18 19 20for i in range(1,70): 21 driver.get("https://minkabu.jp/financial_item_ranking/market_capitalization?order=asc&page=" + str(i))#&page=2 22 class_name = driver.find_element_by_tag_name("tbody").find_elements_by_tag_name("tr")[1:] 23 24 for souse in class_name: 25 driver = webdriver.Chrome(options=options) 26 number = souse.find_elements_by_class_name("md_sub")[0].text 27 print("取得する銘柄は"+number+"です") 28 driver.get("https://kabuoji3.com/stock/"+number+"/") 29 time.sleep(5) 30 all_price = driver.find_elements_by_tag_name("tbody") 31 print(driver.current_url) 32 a_df = pd.DataFrame(columns=['日付','始値','終値','出来高']) 33 34 for data in all_price: 35 date = data.find_element_by_tag_name("tr").find_elements_by_tag_name("td")[0].text 36 time.sleep(1) 37 opening_price = data.find_element_by_tag_name("tr").find_elements_by_tag_name("td")[1].text 38 time.sleep(1) 39 closing_price = data.find_element_by_tag_name("tr").find_elements_by_tag_name("td")[4].text 40 time.sleep(1) 41 Volume = data.find_element_by_tag_name("tr").find_elements_by_tag_name("td")[5].text 42 time.sleep(1) 43 tmp_se = pd.Series( [ date, opening_price, closing_price, Volume ], index=a_df.columns ) 44 a_df = a_df.append( tmp_se, ignore_index=True ) 45 mycsv = a_df.sort_values('日付') 46 a_df.to_csv(number + "_stockPriceData.csv",index=False) 47endTime = time.time() #プログラムの終了時刻 48runTime = endTime - stratTime #処理時間 49print(runTime)
可能な限り処理時間を短くするための具体的なアドバイスが欲しいです。
ちなみに今の処理時間は二日以上かかります。途中で下記のようなエラーが出るため処理が完了したことはありません。(200銘柄がマックス取得です。)
error
1selenium.common.exceptions.WebDriverException: Message: unknown error
そのほかに考えられる問題があればそちらも兼ねてお答えいただければと思います。
何卒よろしくお願い申し上げます。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/14 18:18