본문 바로가기
IT 로그/Python

[Web Crawler] 파이썬 2020년 정규 시즌 야구 경기 일정 크롤링

by 잡다무니 2020. 11. 22.

안녕하세요. 잡다무니입니다.

 

이번에는 정규 시즌!

파이썬 크롤링을 이용한 KBO 야구 경기 일정 데이터를 수집하는 웹 크롤러를 만들어 보려고 합니다.

 

간단한 환경은 앞선 글에서 확인해주세요.

 

[Web Crawler] 파이썬 2020년 포스트 시즌 야구 경기 일정 크롤링

안녕하세요. 잡다무니입니다. 파이썬 크롤링을 이용한 KBO 야구 경기 일정 데이터를 수집하는 웹 크롤러를 만들어 보려고 합니다. 웹 크롤러(web crawler)는 조직적, 자동화된 방법으로 월드 와이드

jobdamuny.tistory.com

팀은 '기아 타이거즈'를 선택해보았습니다.

(어디선가~ 기아 타이거즈가 2020년 인기 순위 1위라고 본 것 같습니다.)

 

아래 KBO 페이지의 HTML 태그 정보 중 "att-value" 를 살펴보면, 기아 타이거즈는 'HT'입니다.

'해태'부터 이어져온 값인가요?!ㅎㅎ

2020년 한국시리즈 경기 팀인 두산 베어스는 'OB'입니다~

 

2020년 정규 시즌 일정은 5월부터 10월까지였기에 해당 달의 데이터만 크롤링하도록 하였습니다.

 

from bs4 import BeautifulSoup
from selenium import webdriver
import pandas as pd

driver = webdriver.Chrome('chromedriver의 위치 경로')
url = driver.get('https://www.koreabaseball.com/Schedule/Schedule.aspx')

# 정규 시즌 콤보 박스 클릭
driver.find_element_by_xpath("//select[@id='ddlSeries']/option[text()='KBO 정규시즌 일정']").click()

# 기아 선택
driver.find_element_by_xpath("//ul[@class='tab-schedule']/li[@attr-value = 'HT']").click()

# 5월~10월 정규시즌 일정
list_month = ['05', '06', '07', '08', '09', '10']
searchList = []
for month in list_month:
    # 달력 선택
    driver.find_element_by_xpath("//select[@id='ddlMonth']/option[text()='"+str(month)+"']").click()
    # 결과
    html = driver.page_source
    soup = BeautifulSoup(html, 'html.parser')
    tblSchedule = soup.find('table', {'class': 'tbl'})
    trs = tblSchedule.find_all('tr')
    for idx, tr in enumerate(trs):
        if idx > 0:
            tds = tr.find_all('td')
            temp = [tds[0].text.strip(), tds[1].text.strip(), tds[2].text.strip(), tds[3].text.strip(), tds[7].text.strip()]
            searchList.append(temp)

# csv 만들기
data = pd.DataFrame(searchList)
data.columns = ['day', 'time', 'play', 'relay', 'park']
data.head()
data.to_csv('2020년_정규시즌_일정.csv', encoding='cp949')

 

코드가 다소 깔끔하지 않지만, 너그러운 마음으로 봐주세요.

파이썬 초보라서...ㅎㅎ

 

짧은 글이지만 읽어주셔서 감사합니다.

댓글