Search

[LOL 데이터 프로젝트 A to Z] - 2편. 데이터 수집(API 활용)

[LOL 데이터 프로젝트 A to Z] - 1편. 개요
Python
Data Engineering
Data Analysis
Data Science
2024/10/13
[LOL 데이터 프로젝트 A to Z] - 1편. 개요
Python
Data Engineering
Data Analysis
Data Science
2024/10/13

데이터 수집

데이터 수집은 데이터 프로젝트의 첫걸음이자 가장 중요한 부분입니다. 아무리 뛰어난 분석 기술과 모델링 기법을 갖추고 있더라도, 양질의 데이터가 없다면 의미 있는 결과를 도출할 수 없습니다. 따라서 프로젝트의 성공 여부는 어떤 데이터를 어떻게 수집하느냐에 달려 있다고 해도 과언이 아닙니다.

주요 고려 사항

1. 데이터 소스 식별

데이터 수집을 시작하기 전에 데이터 소스를 식별하는 것이 중요합니다. 데이터 소스는 크게 내부 데이터와 외부 데이터로 나눌 수 있습니다.
내부 데이터: 기업이나 조직 내부에서 생성된 데이터로, 기존 시스템이나 데이터베이스에서 추출하여 활용할 수 있습니다. 내부 데이터라고 해서 수집이 필요 없다고 생각할 수 있지만, 분석에 활용하기 위해서는 동일하게 수집 과정이 필요합니다.
외부 데이터: 공공 데이터 포털, 오픈 API, 웹 스크래핑 등을 통해 수집한 데이터를 말합니다. 이러한 외부 데이터는 프로젝트의 범위를 확장하거나 내부 데이터의 부족한 부분을 보완하는 데 유용합니다. 또한 필요한 경우 데이터 제공 업체로부터 데이터를 구매하여 활용할 수도 있습니다.

2. 데이터 수집 방법 결정

데이터 소스를 식별한 후에는 데이터 수집 방법을 결정해야 합니다. 수집 방법에는 여러 가지가 있으며, 프로젝트의 특성과 데이터의 형태에 따라 적합한 방법을 선택해야 합니다.
API 활용: RESTful API 등을 통해 데이터를 직접 호출하여 수집하는 방식입니다.
웹 스크래핑: 크롤링 기술을 활용하여 웹 페이지에서 필요한 데이터를 추출하는 방법입니다.
데이터베이스 연결: SQL 등을 사용하여 데이터베이스에서 직접 데이터를 가져오는 방식입니다.
프로젝트의 목적과 데이터의 특성에 따라 가장 효율적인 수집 방법을 선택하는 것이 중요합니다.

LOL 데이터 수집

이번 글에서는 리그 오브 레전드(LOL) 게임의 데이터를 수집하기 위해 라이엇 게임즈에서 제공하는 API를 활용하는 방법을 알아보려고 합니다.

Riot Developer Portal

Riot Developer Portal은 Riot에서 운영하는 게임들의 데이터를 제공하는 API 명세를 담은 사이트입니다. 이곳의 API 사양을 토대로 유저 정보, 매치 데이터 등 다양한 정보를 수집할 수 있습니다.

Riot API Key

Riot Developer Portal에 접속하여 API를 활용하기 위해서는 계정별로 Development API Key를 발급받아야 합니다.
1.
롤 계정으로 접속 후에 우상단에 존재하는 Dashboard로 이동
2.
Development API Key 발급 진행

Riot API 사용 시 고려 사항

Development API Key를 사용할 때는 몇 가지 주의할 점이 있습니다. 이 키는 실제 Product API Key가 아니므로 요청에 제한이 있습니다. 발급받은 키는 24시간 동안만 유효하며, 이후에는 매번 재발급을 받아야 합니다. 또한 아래와 같이 요청 제한이 있기 때문에, 실제 데이터 엔지니어링 과정에서는 이러한 부분을 고려해야 하며, 요청 제한으로 인해 실패할 경우에 대한 설계도 필요합니다.
Rate Limits:
20 requests every 1 second(s)
100 requests every 2 minutes(s)
Note that rate limits are enforced per routing value (e.g., na1, euw1, americas).

API 요청 예시

예전에는 소환사명만으로도 유저 조회가 가능했지만, 현재는 중복 닉네임이 가능해지면서 소환사명과 태그명을 함께 입력해야 조회할 수 있습니다.
위에서 발급받은 API Key를 이용해서, 앞으로 자주 사용할 puuid 를 가져오보도록 합시다.
/riot/account/v1/accounts/by-riot-id/{gameName}/{tagLine}소환사명과 태그명으로 요청을 보내면 해당 계정의 puuid를 반환하는 API입니다.
import requests # 발급받은 API Key를 입력해주세요 API_KEY = '' # 헤더 설정 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " "AppleWebKit/537.36 (KHTML, like Gecko) " "Chrome/92.0.4515.107 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 } # 소환사 정보 설정 game_name = "우도특산품땅콩" tag_line = "KR1" # API 엔드포인트 URL 생성 url = f"https://asia.api.riotgames.com/riot/account/v1/accounts/by-riot-id/{game_name}/{tag_line}" # API 요청 보내기 response = requests.get(url, headers=headers) # 응답 데이터 확인 및 파싱 if response.status_code == 200: player_info = response.json() # 필요한 데이터 추출 puuid = player_info.get('puuid') print(f"플레이어의 PUUID: {puuid}") else: print(f"API 요청 실패: {response.status_code} - {response.text}")
Python
복사
# response.text 값 { 'puuid': 'U_KHpvEK6JW8SShQcGRNPCKaH04DLjhyqPaMfGRKmGZO3SgzdDXeLZQxamBWesWs_-IbKK6AdMJ9DQ', 'gameName': '우도특산품땅콩', 'tagLine': 'KR1' }
Python
복사

마무리

이번 글에서는 데이터 수집의 과정에 대해 간단히 알아보고, Riot Developer Portal에서 API Key를 발급받아 API를 요청하는 방법을 알아보았습니다. 다음 시리즈에서는 API 명세를 살펴보며 수집 가능한 데이터가 무엇이 있는지, 각 데이터의 구조는 어떻게 되어 있는지 알아보도록 하겠습니다.