Red vs Blue의 데이터를 보충하기 위해 롤 경기 결과 보고 있다.

원래 간단하게 코드펜으로 카운팅하는 거 만들어서 직접 레드 진영과 블루 진영 중에 누가 이겼는지를 체크했다. 그렇게 월드 챔피언십 결과를 정리했는데 LCK 데이터를 추가하려고 하니까 스프링, 서머 각각 200 경기가 넘더라...😇 그래서 이거 직접하다가 중간에 틀려서 total 안 맞으면 괴롭겠다 싶어서 당장 코랩을 켰다.


※파이썬 주의사항: 뒤에 세미콜론(;) 안 씀.


롤 인벤에 있는 경기 기록을 기반으로 카운팅했다.

LOL inven history

인벤 기록에는 왼쪽에 블루 진영, 오른쪽에 레드 진영이 나오게 표시되어 있다.

블루 진영의 'W'와 'L' 개수를 세서 각 진영이 몇 번 이겼는지 기록할 것이다.

'W' 글자의 class는 모두 color1이기 때문에 이걸 전부 가져와서 안에 있는 'W'와 'L'의 수를 count에 더하면 될 것 같다.


*Google Colab에서 실행했음.

requests와 BeautifulSoup를 설치한다.

!pip install requests
!pip install bs4

import requests
from bs4 import BeautifulSoup
import urllib.request

필요한 링크를 복사한다. 롤 인벤 기록실에서 필요한 걸 선택한 뒤에 2페이지를 클릭하면 링크가 좀 간단하게 나온다.

https://lol.inven.co.kr/dataninfo/match/teamList.php?pg=2&iskin=lol&category2=173

빨간색 부분이 페이지인 것을 확인했다. 그리고 대회별로 맨 뒤 category2의 숫자만 변하는 것 같다.

존재하는 페이지 수를 넘어가면 그냥 마지막 페이지가 계속 나오기 때문에 range를 사용할 때 정확한 페이지 수를 입력해야 한다.

range(a, b)는 a이상 b미만이다.

뒤늦게 부전승은 블루 진영이 이기는 걸로 표시된다는 걸 알게 되어서 부전승 수를 세서 빼는 것도 포함했다. 첫 페이지에 부전승 결과가 있어서 다행이다. 이거 발견 못했으면...😇

w_count = 0
l_count = 0
un_count = 0 #부전승

for num in range(1,10):
  url = "https://lol.inven.co.kr/dataninfo/match/teamList.php?pg="+ str(num)+"&iskin=lol&category2=166"
 
  request = requests.get(url)
  html = request.text

  soup = BeautifulSoup(html, 'html.parser')

  color1 = soup.find_all("div", class_="color1")

  for div in color1:
    text = div.get_text()
    w_count += text.count('W')
    l_count += text.count('L')

  #부전승 제외
  picks = soup.find_all("ul", class_="pick")
  for pick in picks:
    li_e = pick.find_all("li")
    if li_e[0].get_text() == 'X':
      un_count += 1
w_count -= un_count/2
print("W의 수: ", w_count)
print("l의 수: ", l_count)
print("total: ", w_count+l_count)

'pick'인 클래스가 블루, 레드 양쪽 다 있기 때문에 2로 나누다보니까 결과가 실수로 나온다. 그치만 그게 중요한 건 아니니 그냥 넘어가겠음.

2022 월즈 기록을 먼저 돌렸는데 내가 수동으로 기록한 것과 같은 결과가 나왔다. 아니 이렇게 간단하게 끝날 줄 알았으면 수동으로 안 했지...🥰 어차피 제대로 나왔는지 확인하려면 한 번은 직접 했겠지만.

한 페이지에 25개의 기록이 있으니까 전체 경기 수를 확인하고 싶을 때는 ([전체 페이지 수] - 1)*25 + [마지막 페이지에 있는 경기 기록 수]로 계산하면 된다.

결과는 거의 50/50으로 나오긴 한다. 2020년에 블루 진영 대포 미니언의 사거리가 더 짧았다는 이야기가 있었어서 2020 스프링으로 돌려봤는데 블루 120 : 레드 103이 나왔다.