Red vs Blue의 데이터를 보충하기 위해 롤 경기 결과 보고 있다.
원래 간단하게 코드펜으로 카운팅하는 거 만들어서 직접 레드 진영과 블루 진영 중에 누가 이겼는지를 체크했다. 그렇게 월드 챔피언십 결과를 정리했는데 LCK 데이터를 추가하려고 하니까 스프링, 서머 각각 200 경기가 넘더라...😇 그래서 이거 직접하다가 중간에 틀려서 total 안 맞으면 괴롭겠다 싶어서 당장 코랩을 켰다.
※파이썬 주의사항: 뒤에 세미콜론(;) 안 씀.
롤 인벤에 있는 경기 기록을 기반으로 카운팅했다.
인벤 기록에는 왼쪽에 블루 진영, 오른쪽에 레드 진영이 나오게 표시되어 있다.
블루 진영의 'W'와 'L' 개수를 세서 각 진영이 몇 번 이겼는지 기록할 것이다.
'W' 글자의 class는 모두 color1이기 때문에 이걸 전부 가져와서 안에 있는 'W'와 'L'의 수를 count에 더하면 될 것 같다.
*Google Colab에서 실행했음.
requests와 BeautifulSoup를 설치한다.
!pip install requests!pip install bs4import requestsfrom bs4 import BeautifulSoupimport 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 = 0l_count = 0un_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.textsoup = 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 += 1w_count -= un_count/2print("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이 나왔다.

0 댓글