AtCoder의 랭킹을 python으로 스크래핑 해보십시오.
import urllib.request
l=[]
for r in range(1,311):
print(r)
d=urllib.request.urlopen("https://atcoder.jp/ranking?desc=true&orderBy=competitions&page="+str(r)).read().decode('utf-8').replace(" ","").split("\n")
for i in range(len(d)):
tmp=[]
if d[i]=="<tr>":
tmp.append(int(d[i+1].replace(r'<td class="no-break">',"").replace("</td>","")))
tmp.append(d[i+2].replace("</span></a>","")[-18:].split(">")[-1])
tmp.append(int(d[i+5].replace("<td><b>","").replace("</b></td>","")))
tmp.append(int(d[i+6].replace("<td><b>","").replace("</b></td>","")))
tmp.append(int(d[i+7].replace("<td>","").replace("</td>","")))
l.append(tmp)
l에 순위, 사용자 이름, 현재 요율, 최고 요율, 참여 횟수를 입력합니다.
%matplotlib inline
from numpy import*
df=array(l)
df=df[df[:,-1]>=5]
x=[float("inf"),2800,2400,2000,1600,1200,800,400,0]
current=[]
high=[]
for i in range(len(x)-1):
current.append(len(df[:,2][ (x[i]> df[:,2]) & (df[:,2] >=x[i+1]) ]))
high.append(len(df[:,3][ (x[i]> df[:,3]) & (df[:,3] >=x[i+1]) ]))
print(current,high)
레이트로 나누어 current와 high에 넣습니다.
빨간색부터 순서대로
[139, 223, 488, 948, 1947, 2669, 2715, 2647]명
[150, 255, 488, 998, 2028, 2680, 2660, 2517]명
라는 것을 알았습니다.
from matplotlib.pyplot import*
pie(current, startangle=90,colors = ["red","orange","yellow","blue","cyan","green","brown","gray"])
재, 차, 녹색, 하늘색으로 비슷한 비율로 존재하는 것 같습니다.
pie(high, startangle=90,colors = ["red","orange","yellow","blue","cyan","green","brown","gray"])
high에서도 그다지 바뀌지 않았습니다. 끝.
Reference
이 문제에 관하여(AtCoder의 랭킹을 python으로 스크래핑 해보십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/KyleKatarn/items/fd566b63fda6f8b11057텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)