kurobuta300
@kurobuta300

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

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

No Answers yet.

Your answer might help someone💌