본문 바로가기

R 크롤링

[R] 디아블로3 API를 활용하여 직업별 상위 랭킹 세팅 분포 구하기 다섯번째날

반응형

##작성자: 춤추는초코칩

##작성일: 2018-03-23

##작성내용: 직업별 대균열 순위 분포도


첫번째날: 디아블로3 개발자 사이트 가입하기

두번째날: 바바리안 랭커 배틀태그, 히어로아이디 수집하기

세번째날: 바바리안 1위 랭커 아이템 확인하기

네번째날: 바바리안 상위 100위 랭커 세팅 분포 확인하기


원래대로라면... 직업별 상위 랭커 세팅 분포를 확인해야 했지만

의외로 404에러로 페이지를 못찾는 경우가 발생했습니다.

처리방법은 지금 생각 중이라, 그 사이에 대균열 순위 분포도를 그려보기로 했습니다.


공식홈페이지에서 순위 페이지에서 대균열 순위에 해당하는 "cell-RiftLevel"이라는 클래스가 있습니다.

이를 활용하여, R에서 다음과 같은 사용자 정의 함수를 짰습니다.

rank.function <- function(job){

  rank <- paste("https://kr.diablo3.com/ko/rankings/season/13/rift-",job,sep="")

  rank_html <- read_html(rank)

  rank_level <- html_nodes(rank_html,'.cell-RiftLevel') #cell-RiftLevel 클래스의 정보를 가지고 옵니다.

  a <- matrix(unlist(strsplit(html_text(rank_level),"\n")),ncol=1000)[2,] #해당 클래스의 텍스트 정보에서 대균열 순위정보만 가지고 옵니다.

  a <- as.integer(a) #대균열 순위를 정수로 변환합니다.

  return(a)

}


직업별로 순위 정보를 아래와 같이 가져옵니다.

baba <- rank.function(job="barbarian")

cru <- rank.function(job="crusader")

dh <- rank.function(job="dh")

monk <- rank.function(job="monk")

nec <- rank.function(job="necromancer")

wd <- rank.function(job="wd")

wiz <- rank.function(job="wizard")


가지고온 직업별 대균열 정보의 평균과 중위수를 통해 어떤 직업이 높은 순위를 가지고 있는지 확인해 보겠습니다.

mean(baba)

mean(cru)

mean(dh)

mean(monk)

mean(nec)

mean(wd)

mean(wiz)

median(baba)

median(cru)

median(dh)

median(monk)

median(nec)

median(wd)

median(wiz)

성전사가 평균 106.4위로 가장 높고, 강령술사, 마법사, 악마사냥꾼은 100위를 전후로 비슷비슷합니다. 

그 뒤를 수도사가 97.9위, 야만용사가 94.6위입니다. 가장 순위가 낮은 직업은 부두술사로 평균 84.8위입니다.

요즘 부두게시판이 죽겠다 죽겠다 하는데는 이유가 있는거 같습니다.

잘나가는 성전사랑 비교해보면 20위 넘게 차이나고 바로 위는 야만용사랑도 10위 정도 차이가 납니다.


히스토그램을 그려서 그 차이를 보겠습니다. 상자그림도 괜찮지만 그럴러면 데이터 형태를 바꿔야 되서 패스하겠습니다.

7개 직업을 한 페이지에 그리고 싶지만... ㅠ.ㅠ 화면이 작은 관계로 4개씩 히스토그램을 그렸습니다.

par(mfrow = c(4, 1))

hist(baba, breaks=seq(74,120,by=2), xlim=c(75,120))

hist(cru, breaks=seq(74,120,by=2), xlim=c(75,120))

hist(dh, breaks=seq(74,120,by=2), xlim=c(75,120))

hist(monk, breaks=seq(74,120,by=2), xlim=c(75,120))

hist(nec, breaks=seq(74,120,by=2), xlim=c(75,120))

hist(wd, breaks=seq(74,120,by=2), xlim=c(75,120))

hist(wiz, breaks=seq(74,120,by=2), xlim=c(75,120))

그래프로 보니, 강령술사, 마법사, 악마사냥꾼, 수도사는 차이가 거의 없어 보니네요.

확실히 이번 13시즌 성전사는 강력하고, 부두술사는 약한거 같습니다.

하지만, 메타는 언제나 돌고 도니깐 ^ㅡ^ 또 기대해 봐야 할거 같습니다.

그럼 모두 즐겜되세요. ^^;;


반응형