야구 데이터 수집 자동화

데이터 · 크롤링4분 읽기

야구 데이터 수집 자동화 소개 영상

문제

이 고객은 KBO 경기를 분석하는 개인 분석가였습니다. 매 경기 분석에 필요한 재료가 많았습니다. 오늘의 매치업과 선발투수, 선발의 구종 레퍼토리와 좌우 타자 상대 성적, 팀 타격 지표, 불펜의 최근 투구수까지. 문제는 이 지표들이 한곳에 있지 않다는 점입니다. 경기 정보 사이트, 통계 사이트, 리그 공식 기록, 포털 스포츠 페이지를 오가며 수치를 확인하고 손으로 옮겨 적는 준비 작업이 매일 경기 수만큼 반복됐습니다.

수작업의 한계는 시간만이 아니었습니다. 지표를 옮겨 적는 과정에서 생기는 전기 실수는 분석 결과 전체를 의심하게 만들고 하루 다섯 경기의 지표를 전부 챙기는 것은 물리적으로 벅찼습니다. 요구는 명확했습니다. 버튼을 누르면 오늘 경기의 분석 재료가 리포트 형태로 나올 것.

접근

기능

버튼 두 번으로 끝나는 수집 흐름

첫 버튼이 당일 경기 목록과 선발투수를 불러오고, 두 번째 버튼이 선택한 경기(또는 당일 전 경기)의 지표를 수집해 리포트를 만듭니다. 결과물은 경기당 분석 리포트 이미지 넉 장(두 종류 × 한국어·영어)과 불펜 투구수 엑셀입니다. 분석가는 프로그램이 만든 재료 위에서 바로 분석을 시작합니다.

기능

네 곳의 소스, 소스마다 다른 수집 방식

경기 정보, 상세 통계, 리그 공식 기록, 포털 스포츠 페이지까지 소스가 네 곳이고 성격이 전부 다릅니다. 공식 기록처럼 JSON 데이터를 직접 제공하는 곳은 브라우저 없이 빠르게 받아오고, 로그인이 필요한 통계 사이트는 실제 브라우저를 띄워 사람의 속도로 수집합니다. 한 소스가 응답하지 않으면 대체 소스로 넘어가는 폴백 체인도 두었습니다.

기능

수집 지표 13종과 까다로운 판별 로직

선발 구종 레퍼토리, 좌우 상대 성적, 팀 지표, 불펜 순위, 타자별 상대 전적, 시간대별 성적, 로테이션 간격별 승률까지 수집 단계가 13종입니다. 동명이인 선수는 소속 팀 대조로 판별하고, 홈 타자에게는 원정 선발의 구종을, 원정 타자에게는 홈 선발의 구종을 배선하는 교차 로직으로 분석 관점을 코드에 담았습니다.

기능

수치 검증: 리포트와 원본의 전수 대조

자동 수집의 신뢰를 위해 리포트에 표시되는 수치를 원본 화면과 전수 대조하는 검증을 수행했습니다. 두 경기 표본에서 표시 수치 사백여 개를 대조해 불일치 없음을 확인했고 검증 절차 자체를 문서로 남겨 이후 변경 때도 같은 방식으로 재검증할 수 있게 했습니다.

기능

상대 서버를 배려하는 수집 페이싱

요청 간 지연에 배수 설정을 두고 최소 배수 아래로는 내려가지 않게 강제했으며 경기와 경기 사이에는 삼십 분의 쿨다운을 두었습니다. 로그인 세션은 쿠키로 재사용해 반복 로그인을 없앴습니다. 빠른 수집보다 오래 쓸 수 있는 수집을 우선한 설계입니다.

수집 흐름은 다음과 같습니다.

매치업 로드 후 네 곳의 소스에서 지표를 수집하고 데이터셋으로 조립해 리포트 이미지와 엑셀로 렌더링하는 흐름매치업 로드당일 경기 · 선발소스 4곳 수집JSON 직접 · 브라우저폴백 체인지표 13종 조립교차 배선 · 검증리포트 렌더이미지 4장(한 · 영)불펜 16열 엑셀

프로그램은 맥용 데스크톱 앱으로 만들어 설치 파일(DMG)로 전달했고 파이썬 없이 더블클릭으로 실행됩니다. 장시간 일괄 수집을 위해 완료·실패를 메신저로 알려 주는 원격 알림도 붙였습니다. 사이트 구조 변경에 대비해 대상 주소를 한 파일에 모아 두어 사이트가 개편돼도 수정 지점이 한 곳으로 좁혀집니다.

결과

경기 분석의 준비 단계가 사람의 일에서 프로그램의 일이 됐습니다. 다섯 경기 분량의 지표 수집과 리포트 생성이 일괄 실행으로 처리되고 분석가는 완성된 리포트 이미지와 불펜 엑셀에서 바로 분석을 시작합니다. 수치 전수 대조 검증으로 "자동 수집이 정확한가"라는 근본 질문에도 답을 만들어 두었습니다.

이 프로젝트의 기술적 결정들은 아래 글에서 더 자세히 다룹니다.

자주 묻는 질문

수집한 야구 데이터는 어떤 형태로 나오나요?

경기당 분석 리포트 이미지 넉 장(두 종류 각 한국어·영어)과 최근 칠일 불펜 투구수 엑셀입니다. 리포트에는 선발 구종, 좌우 상대 성적, 팀 지표, 타자별 상대 전적, 시간대·로테이션 성적이 표 형태로 배치되어 분석가가 바로 읽을 수 있습니다.

자동 수집한 수치가 정확한지 어떻게 믿나요?

리포트에 표시되는 수치를 원본 화면과 전수 대조하는 검증을 표본 경기에 수행해 불일치 없음을 확인했습니다. 검증 절차를 문서화해 두어 수집 로직이 바뀌거나 사이트가 개편될 때 같은 방식으로 재검증할 수 있습니다.

대상 사이트가 개편되면 프로그램이 멈추지 않나요?

영향 범위를 좁히는 설계로 대응합니다. 대상 주소를 한 파일에 모아 수정 지점을 단일화했고 화면 파싱은 바뀌기 쉬운 세부 구조 대신 안정적인 패턴에 걸었습니다. 개편 시 수리는 필요하지만 국지적인 유지보수 작업으로 관리됩니다.

개인 사용자용 도구도 외주 제작이 가능한가요?

가능합니다. 개인용 도구는 기업 시스템과 달리 서버·계정 관리가 없어 설치형 데스크톱 앱이 적합하고 비용도 그만큼 가벼워집니다. 대신 사용자가 직접 운영하므로 설치 편의성, 설정 화면, 알림 같은 사용성 요소가 더 중요해집니다.

도입 결과

경기마다 여러 사이트를 오가며 지표를 손으로 옮겨 적던 분석 준비 작업이 버튼 두 번으로 줄었고, 표시 수치를 원본과 전수 대조해 불일치 없음을 확인한 검증 절차까지 갖춰졌습니다.
#야구데이터#데이터수집#데스크톱앱#스포츠분석

비슷한 업무 자동화가 필요하신가요?

무료 상담 신청