[PUBG API] 파이썬으로 데이터 가져오기② requests 코드 총정리

Haein Kim·2020년 11월 13일
2
post-thumbnail

⚠ 정리하다가 샛길로 빠졌읍니다. 이건 가볍게 훅! 훑기만 하고 이 다음 다음 포스트를 참고해주세요!
엔드포인트와 샤드의 차이를 찾아보려다 REST API 에 관해 읽어보게 되었고.... 펍지가 왜 이렇게 적당히 설명해주나 했는데 나름 최선이었음 알았다.... 하지만 덕분에 재밌는 걸 찾았다. 그래도 이걸 엎을 수는 없고, 일단 이 정도에서 잠시 멈추고, 프로젝트를 위한 쉬운 버전 가이드를 만들 예정.
👉 [펍지 API] 파이썬으로 데이터 가져오기③ 실전 사용법


배그 API 활용을 위한 공식문서 톺아보기

Documentation 에서 활용하는 방법을 정말 세세하게 설명해주기는 하지만! 카테고리 구분이 좀 불분명해서 언뜻 보면 굉장히 헷갈린다. 모든 정보가 필요하지도 않고.

그래서! 총.정.리 해보았다!!

파이썬 requests 코드

파이썬으로는 requests 모듈을 이용해 데이터를 불러오는데, 친절하게 이 코드도 다 알려준다.

import requests

url = "endpoint-url"

header = {
  "Authorization": "Bearer <api-key>",
  "Accept": "application/vnd.api+json"
}

r = requests.get(url, headers=header)

여기서 손대야 하는 곳은 총 3군데이다.

  • url 의 "endpoint-url" 괄호 안
  • Authorization 의 "Bearer <api-key>" 괄호 안
  • Accept 의 "application/vnd.api*json" 괄호 안

이제부터 하나씩 뜯어보자!

✋🏻 endpoint 란?
API가 데이터베이스로 들어가는 입구라면, endpoint는 클라이언트가 API로 접근하게 해주는 일종의 url이다. 각 endpoint 마다 다른 정보를 가지고 있어서 일종의 필터 역할도 한다. (근본적으로 뭔가 많이 알아야는데, 여기서는 이 정도로 충분)

URL = "endpoint-url"

기본 주소 https://api.pubg.com/ 가 있는데,
배그 데이터는 그냥 가져오려고 했다가는 몇날 며칠이 걸릴 정도로 방-대하기 때문에, endpoint를 포함해서 파라미터를 붙여 선별적으로 가져올 수 있는 걸 이용하자.

뉴욕사는 John이 xbox로 플레이한 데이터까진 필요 없으니까

반면 너무 잘게 잘라올 필요도 없다.
어차피 SQL이나 python으로 전처리를 할 거니까!
필수추천 파라미터 3가지 - 유용한 하위 옵션 위주로 정리했다.

  • shards - steam, kakao / pc-as(Asia), pc-kakao(Kakao), pc-krjp(Korea)
  • endpoint - players, matches
  • filter - filter[playerIds]=$playerId

일단 이렇게 생겼다! 아래는 참고로만 무슨 차이인지 읽어보고, 펍지에서 알아서 필요한 정보에 맞는 파라미터를 가이드하고 있으니 이 다음다음 포스팅을 참조하자.
"https://api.pubg.com/shards/$platform/players?filter[playerNames]=$playerName"

1️⃣ shards

샤드는 AWS에서 쓰는 일종의 저장소 구분 단위이다.
이건 어떤 데이터를 가져오든 꼭 지정해줘야 한다.

"...pubg.com/shards/$steam/endpoint..."

shards/$ 👈 요 달러 표시 뒤에 원하는 것 넣기

1. shards/$platform

배그는 PC(steam, kakao 등)와 콘솔(xbox, ps4 등), 여러 플랫폼으로 서비스하기 때문에 그중 하나로 정해줘야 한다.

  • PC 버전만 볼거니까 이 정도:
    steam, kakao

2. shards/$platform-region

혹은 플랫폼+지역별로 나눠서 볼 수 있다.

  • PC(steam, kakao)+ 한국, ASIA 옵션:
    pc-as - Asia
    pc-kakao - Kakao
    pc-krjp - Korea

더 많은 옵션은 여기

2️⃣ Endpoint

"...pubg.com/shards/$steam/players?filter..."

/players 👈 슬래쉬 뒤에 엔드포인트 이름 넣기.

앞서 설명한 것처럼, endpoint가 무엇이냐에 따라서 가져오는 정보가 달라진다. 데이터프레임으로 생각하면, 컬럼 리스트가 달라지는 것!

사실 엄밀히 따지면 이 url 자체가 endpoint이다.
하지만 shards는 거의 디폴트로 쓰기 때문에 편의상 이 부분을 endpoint 라고 부르겠다.

라고 써놓고 맞나? 싶어서 찾아보다가 딴 길로 새게 된 것...

  • Endpoint 옵션:
    Players :
    Player objects contain information about a player and a list of their recent matches (up to 14 days old).
    Season stats -
    seasons Season objects each contain the ID of a season, which can be used to lookup season information for a player.

이거는 여기서 다 설명이 불가... 간단하게만 말하면!
펍지 Documenatation 의 카테고리 PLAYERS 부터 MATCHES 정도까지 앞으로 쓸 거다. 그런데 이게 endpoint 뭐 이런 개념으로 묶은게 아니고 펍지가 나름 사용자 입장에서 편하게 분류한 거 같다. 아마도
아무튼 그래서 펍지의 의도대로 사용하는 법은 이 다음다음 포스팅 참고!

3️⃣ ?filter[playerNames]=$playerName

말그대로 필터!

[ ] 필터 이름 총 4가지 중 택 1.
$ 뒤에 꺼내고 싶은 게 뭔지.

  • 필터 옵션:
    filter[playerIds]=$playerId
    filter[playerNames]=$playerName
    filter[gamepad]=$isGamepad
    page[number]=$page

주로 쓰게 될 playerIds와 playerNames는 콤마(,)를 이용해 한 번에 10개까지 가져올 수 있다.

(참고) 프로선수, 구단 바꾸면서 이름을 바꾸기도 해서 playerId를 알아낸 다음 그걸로 가져오자.

이것도 좀 복잡스... 그냥 그렇구나! 하고 넘어가기!

"Authorization": "Bearer <api-key>"

header = {
  "Authorization": "Bearer <api-key>",
  "Accept": "application/vnd.api+json"
}

"Bearer <api-key>"의 따옴표 안을 전부 지우고,
처음에 회원가입 하고 발급받은 자신의 고유 API key 를 복붙하면 끝!

"Accept": "application/vnd.api+json"

API를 어떤 포맷으로 가져올지 결정해주는 코드

header = {
  "Authorization": "Bearer <api-key>",
  "Accept": "application/vnd.api+json"
}

"application/vnd.api+json"의 진하게 표시 안에 넣을 수 있는 두 가지 옵션:
"application/vnd.api+json"
"application/json"

여기서도 두 개의 차이가 궁금해서 구글링
근데 나중에 볼 예시에서 보면 전자만 보여서... 후자는 안되는 건가? 했는데 json만 있는 것도 어디서 본 거 같은데 모양이 약-간 달랐다. 아직 실습을 제대로 안해봤지만, 둘 다 시도해보시길.


"아~ 이런게 있구나" 했다면, ~~더 이상 알면 다치니까
👉👉 다음다음 포스팅 [펍지 API] 파이썬으로 데이터 가져오기③ 실전 사용법


참고:
PUBG Developers Documentation
API와 ENDPOINT란 무엇인가?

profile
콘텐츠를 사랑하는 데이터 분석가

0개의 댓글