프로젝트/Riot LoL

어떤 티어의 유저들을 가져올까?

SigmoidFunction 2021. 7. 30. 09:34
728x90

롤 데이터를 수집하기에 앞서 데이터의 양이 너무나도 방대하기 때문에 어떤 티어의 유저를 수집할 것인지 정하는 것이 좋다. 

 

나는 승리예측 or 피드백 모델을 만드려고 하고 있는데 내가 현재 골드이므로... 플레티넘 유저들의 정보를 찾아보는 것이 좋다고 생각했다. 챌린저, 그랜드마스터, 마스터의 경우는 피지컬 부분도 꽤나 크게 작용하고 실질적으로 다이아보다는 플레티넘이 현실적으로 알맞다고 생각하였다. 플레티넘에서도 플레티넘 1,2,3의 유저들을 가져오려 한다.

 

라이엇에서는 실제로 랭크별 유저들의 정보도 API를 통해서 제공하고 있다.

 

LEAGUE-EXP-V4 API에서 'queue', 'tier', 'division'을 설정해주면 페이지별로 유저들의 정보가 나온다.

 

이런 식으로!

 

데이터를 모두 저장하는 코드를 만든다.

 

import requests
import pandas as pd
import time


api_key = 'API키값 입력!!'
request_header = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36",
    "Accept-Language": "ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7",
    "Accept-Charset": "application/x-www-form-urlencoded; charset=UTF-8",
    "Origin": "https://developer.riotgames.com",
    "X-Riot-Token": api_key
}


for rank_level in ['I','II', 'III'] :
    final_reulst = []
    i = 1
    while True :
        print(rank_level, i)
        url = f"https://kr.api.riotgames.com/lol/league-exp/v4/entries/RANKED_SOLO_5x5/PLATINUM/{rank_level}?page={i}"
        platinum_user = requests.get(url, headers=request_header).json()
        final_reulst += platinum_user
        time.sleep(1)
        if len(platinum_user) == 0:
            break
        else:
            i+=1
    df= pd.json_normalize(final_reulst)
    df.to_csv(f'platinum_{rank_level}_user.csv', index=False, encoding='CP949')

url부분만 살짝 조정해주었다.

 

 그 결과로 

이러한 데이터를 얻을 수 있었다. 

 

'veteran': False - 베테랑, 'inactive': False - 휴먼계정 , 'freshBlood': False - 신규유저, 'hotStreak': False - 연승

 

 

728x90