안녕하세요. 잡다무니입니다.
이번에는 정규 시즌!
파이썬 크롤링을 이용한 KBO 야구 경기 일정 데이터를 수집하는 웹 크롤러를 만들어 보려고 합니다.
간단한 환경은 앞선 글에서 확인해주세요.
팀은 '기아 타이거즈'를 선택해보았습니다.
(어디선가~ 기아 타이거즈가 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')
코드가 다소 깔끔하지 않지만, 너그러운 마음으로 봐주세요.
파이썬 초보라서...ㅎㅎ
짧은 글이지만 읽어주셔서 감사합니다.
'IT 로그 > Python' 카테고리의 다른 글
[API] 파이썬과 구글 API Spreadsheet 활용 Google APIs (0) | 2020.11.26 |
---|---|
[Web Crawler] 파이썬 2020년 포스트 시즌 야구 경기 일정 크롤링 (0) | 2020.11.16 |
[설치] 파이썬 (Python)과 파이참 (PyCharm) 설치 (0) | 2020.11.15 |
댓글