前提・実現したいこと
個人的趣味でプロ野球データの収集を行おうと思っているのですが、
要素の取得の部分で躓き上手くいきません。
複数要素をそれぞれfor文にて抽出を図ったのですが、
csvで出力すると球種、球速、結果が同じものになってしまいます。
球種、球速、結果の部分を正確に反映できるようにしたいです。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
python3.9
1from selenium import webdriver 2import chromedriver_binary 3import time 4import csv 5import datetime 6 7driver = webdriver.Chrome() 8driver.get('https://baseball.yahoo.co.jp/npb/game/2020061903/score?index=0110100') 9 10csv_date = datetime.datetime.today().strftime("%Y%m%d") 11csv_file_name = "carp_data_" + csv_date + ".csv" 12f = open(csv_file_name, "w", encoding="CP932", errors="ignore") 13 14writer = csv.writer(f, lineterminator="\n") 15csv_header = ["球数", "投手", "球種", "球速", "結果", "コース"] 16writer.writerow(csv_header) 17 18i = 0 19item = 1 20while True : 21 i = i + 1 22 time.sleep(5) 23 for elem_ta in driver.find_elements_by_xpath('//*[@id="gm_rslt"]/tbody/tr'): 24 print(elem_ta.text) 25 for elem_tb in driver.find_elements_by_xpath('//*[@id="pitchesDetail"]/section[2]/table[3]/tbody/tr/td[3]'): 26 print(elem_tb.text) 27 for elem_tc in driver.find_elements_by_xpath('//*[@id="pitchesDetail"]/section[2]/table[3]/tbody/tr/td[4]'): 28 print(elem_tc.text) 29 for elem_te in driver.find_elements_by_xpath('//*[@id="pitchesDetail"]/section[2]/table[3]/tbody/tr/td[5]'): 30 print(elem_te.text) 31 for elem_td in driver.find_elements_by_xpath('//*[@id="pitchesDetail"]/section[2]/table[1]/tbody/tr/td/div/span'): 32 pitch_position = elem_td.get_attribute('style') 33 print(pitch_position) 34 csvlist = [str(item), elem_ta.text, elem_tb.text, elem_tc.text, elem_te.text, elem_td.get_attribute("style")] 35 writer.writerow(csvlist) 36 item = item + 1 37 next_link = driver.find_element_by_id('btn_next') 38 driver.get(next_link.get_attribute('href')) 39 if i > 1: 40 break 41driver.close()
試したこと
for文の変数をelem_tdにしてみましたが、うまくいかず…
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/01 11:39
2021/01/01 11:43
2021/01/01 12:23