Seleniumでmysqlにinsertできない問題
実装環境
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文にあると考えています。
なにかほかに必要な情報ありましたら教えてください。
0