実装環境
OS:Windows 10 Pro
開発環境:XAMPP
開発言語:Python 3.9.5,selenium
発生している問題・エラー
表題の通りSeleniumを使用し、Pythonにて取得したデータをMySQLのテーブルにインサートできません。
# codingutf-8 from multiprocessing import Pool from multiprocessing import Process from selenium import webdriver from selenium.webdriver.common.keys import Keys from time import sleep from datetime import datetime as dt from datetime import date import datetime import MySQLdb driver = webdriver.Chrome("C:\Program Files\chromedriver\chromedriver.exe"); driver.get('https://www.scorebing.com/fixtures/202XXXXX'); sleep(2) driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") match_number=1 sample_number=1 now_date=date(202X, XX, XX).strftime('%Y/%m/%d') date_result=[] while sample_number < 2: try: if match_number%30==0 : driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") URL_team = '//*[@id="diary_info"]/table/tbody/tr['+str(match_number)+']/td[1]' URL_time = '//*[@id="diary_info"]/table/tbody/tr['+str(match_number)+']/td[2]' URL_fulltime_score = '//*[@id="diary_info"]/table/tbody/tr['+str(match_number)+']/td[4]' URL_halftime_score = '//*[@id="diary_info"]/table/tbody/tr['+str(match_number)+']/td[6]' a = driver.find_element_by_xpath(URL_team) b = driver.find_element_by_xpath(URL_time) c = driver.find_element_by_xpath(URL_fulltime_score) c_list= c.text.split() d = driver.find_element_by_xpath(URL_halftime_score) b = "20"+b.text b_date=b.split() tdatetime = dt.strptime(b, '%Y/%m/%d %H:%M') result_date = dt.strptime(b_date[0], '%Y/%m/%d').strftime('%Y/%m/%d') if now_date<result_date: break d_list= d.text.split() plus_minutes_time=tdatetime + datetime.timedelta(minutes=30) if a.text != "" and c.text != "" and d.text != "": print(a.text+","+tdatetime.strftime('%Y/%m/%d %H:%M')+","+plus_minutes_time.strftime('%Y/%m/%d %H:%M')+","+c_list[0]+","+c_list[2]+","+d_list[0]+","+d_list[2]) date_result.insert(match_number-1,(a.text,tdatetime.strftime('%Y-%m-%d %H:%M:%S'),plus_minutes_time.strftime('%Y-%m-%d %H:%M:%S'),int(c_list[0]),int(c_list[2]),int(d_list[0]),int(d_list[2]))) except: print("予期せぬエラー") break match_number += 1 # 接続する conn = MySQLdb.connect( user='root', passwd='', host='localhost', db='soccer_result') # カーソルを取得する cur = conn.cursor() # SQL(データベースを操作するコマンド)を実行する # userテーブルから、HostとUser列を取り出す print(date_result) sql = "INSERT INTO soccer_result (league_name,kickoff_time,half_time,team_1_Fscore,team_2_Fscore,team_1_Hscore,team_2_Hscore) VALUES (%s,%s,%s,%s,%s,%s,%s)" cur.executemany(sql,date_result) for i in date_result: cur.execute(sql,i) conn.commit conn.close cur.close print("END")
自分で試したこと
printによる配列に代入する値ならびに、インサート前の配列の中身(date_result)に関してはインサートする際のINSERT INTO soccer_result (league_name,kickoff_time,half_time,team_1_Fscore,team_2_Fscore,team_1_Hscore,team_2_Hscore) VALUES (%s,%s,%s,%s,%s,%s,%s)の形になっていますが、エラーも特に出力されることなくインサートされていない現象が起き困惑しています。
試しにテーブルのcreateに関しては問題なく行えたため問題はINSERT文にあると考えています。
なにかほかに必要な情報ありましたら教えてください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/27 20:35