본문 바로가기
스포츠 데이터 분석

네이버 스포츠 (야구) 웹사이트 크롤링

by knowing_j1n 2024. 8. 28.
728x90

안녕하세요.

오늘은 네이버 스포츠 웹사이트 크롤링을 한번 해보겠습니다.


사용할 URL은 아래와 같습니다.

 

https://m.sports.naver.com/game/20240827KTLG02024/preview

https://www.koreabaseball.com/Record/TeamRank/TeamRankDaily.aspx

 

KBO 홈페이지

KBO, 한국야구위원회, 프로야구, KBO 리그, 퓨처스리그, 프로야구순위, 프로야구 일정

www.koreabaseball.com

 

 

 

스포츠 데이터 분석

 

 


주로 selenium webdriver chrome을 사용하여 사이트를 크롤링 했습니다.

 

우선  순위표는 BeautifulSoup를 사용하여 크롤링 하였습니다.

 

가져온 데이터는 csv파일로 저장을 하여 읽는 방식을 택했습니다.

 

 

또한 순위표가 반영된 날짜의 기준을 크롤링 하고자

selenium의 webdriver를 사용하였습니다.


 

결과적으로, 위 2가지의 링크를 입력하여 코드를 실행하면

순위표와 순위표가 반영된 최근 날짜를 확인할 수 있습니다.

 

순위표 데이터프레임 추출

 


다음으로는 순위표 시각화 입니다.

 

특정팀의 지정된 색상을 순위표에 할당하여

순위가 변경되어도 올바르게 색상이 할당되도록 하였습니다.

 

순위표 데이터프레임에 팀별 특정색 값 할당

 


각 팀을 상징하는 컬러를 부여했고, seaborn을 사용하여 barplot으로 시각화 하였습니다.

 

타이틀로는 추출한 날짜를, " X축 : 팀명 , Y축 : 승률" 로 그래프를 나타내보았습니다.

 

순위표 시각화


다음으로는 양 팀의 전력 비교 입니다.

 

웹드라이버를 사용하여 크롤링 하였고,

필요한 텍스트가 포함되어 있는 클래스를 찾아 텍스트를 추출하였습니다.

 

추출한 텍스트를 데이터프레임 형태로 생성하여 나타내었습니다.

 

 

양팀 순위/기록 및 전력 비교
두번째 데이터프레임 transpose


각 팀의 전력을 그래프로 시각화 해 보았습니다.

 

양팀 승률, 타율, 평균자책점 lineplot 시각화

 


또한, 전력 비교 데이터 프레임에도 추가적으로 팀 색상 값을 할당하여

고유한 값을 가지도록 하였습니다.

 

전력 데이터프레임에 색상 값 할당

 


마지막으로, barplot으로 시각화를 해보았습니다. 

 

양팀 승률,타율,평균자책점 시각화


다음으로는 선발투수 전적 및 구종 비교 입니다.

 

위와 동일한 방법으로 크롤링을 실시하였습니다.

 

선발 투수 전적 비교 및 주요구종 비교


다음으로는 키플레이어 전력 비교 입니다.

 

키플레이어의 정의 또한 크롤링하여 확인 했습니다.

 

문장 추출


다음으로는 키플레이어들의 히팅존(스트라이크 존) 별 타율 데이터를 크롤링하여

히트맵으로 시각화 하였습니다.

 

각 존에 해당하는 타율의 text값들을 크롤링하여 데이터프레임에 값을 할당하였습니다.

 

기존에는 바깥(1열,2열,4열,5열) 데이터만 존재하여

중앙 위치의 값(3열)은 (바깥) / 2 으로 계산하여 할당하였습니다.

 

표시된 값은 계산한 값으로 할당

 

그 후, 위 데이터프레임을 사용하여 히트맵으로 시각화를 진행하였습니다.

 

키플레이어들의 히팅존 별 타율 히트맵 시각화

 

 

이상으로 네이버 스포츠 (야구) 프리뷰 웹페이지 크롤링을 마치도록 하겠습니다.

자세한 코드는 깃허브에 업로드 하도록 하겠습니다.

 

https://github.com/nijnuenna

 

nijnuenna - Overview

Be interested in sports, Blockchain. nijnuenna has 5 repositories available. Follow their code on GitHub.

github.com

 

 

정독해 주셔서 감사합니다.

728x90