Project

[2024 KBO 타자 별 OPS 예측 모델 개발] 예측 해야 할 타자 리스트 작성

Kim J 2024. 4. 8. 14:11

 

from selenium import webdriver
from selenium.webdriver.common.by import By
import csv

driver = webdriver.Chrome()

try:
    driver.get('https://www.koreabaseball.com/Player/RegisterAll.aspx')
    
    # 선수 이름을 저장할 리스트 - 크롤링 일자 기준 1군 등록된 포수, 내야수, 외야수
    player_names = []

    # 선수 이름을 찾는 코드
    for i in range(1, 10):
        catchers = 'td:nth-child(5) > ul > li:nth-child({})'.format(i)
        catchers = driver.find_elements(By.CSS_SELECTOR, catchers)
        for player in catchers:
            player_names.append(player.text)

    for i in range(1, 10):
        infielders = 'td:nth-child(6) > ul > li:nth-child({})'.format(i)
        infielders = driver.find_elements(By.CSS_SELECTOR, infielders)
        for player in infielders:
            player_names.append(player.text)

    for i in range(1, 10):
        outfielders = 'td:nth-child(7) > ul > li:nth-child({})'.format(i)
        outfielders = driver.find_elements(By.CSS_SELECTOR, outfielders)
        for player in outfielders:
            player_names.append(player.text)
    
    # CSV 파일로 저장
    with open('players.csv', 'w', newline='', encoding='utf-8') as file:
        writer = csv.writer(file)
        writer.writerow(['PlayerName'])
        for name in player_names:
            writer.writerow([name])

finally:
    driver.quit()
 

OPS 는 타자들의 지표이기 때문에 투수를 제외한 타격이 가능한 모든 선수 명단이 필요함.

 

크롤링 당일 기준 1군 등록된 포수, 내야수, 외야수 크롤링하여 csv 파일로 생성하는 코드

 

+ 동시에 2군 선수들 명단도 추가 예정

+ 이름을 제외한 등 번호 삭제 전처리 필요

 

 

 

** 비전공자 이기 때문에 코드가 더러워보일 수 있음.

이렇게 수정하면 더 좋을거 같다라고 생각 되시면 언제든 태클 걸어주세요!

알려주시면 더 열심히 잘 배우겠습니다.