url1="http://www.op.gg/summoner/userName="#한글을 제외한 주소를 url1에 저장
#parse모듈을 사용해 한글부분을 유니코드로 치환
url2=urllib.parse.quote_plus(str(username))url=url1+url2driver=webdriver.Chrome('chromedriver.exe')driver.get(url)
op.gg에 서머너 이름 검색 후 최근전적부터 100번의 게임정보 가져오기
xpath="""//*[@id="SummonerRefreshButton"]"""driver.find_element_by_xpath(xpath).click()# 최근전적으로 갱신하기
time.sleep(10)whileTrue:try:xpath="""//*[@id="SummonerLayoutContent"]/div[2]/div[2]/div/div[2]/div[4]/a"""driver.find_element_by_xpath(xpath).click()# 전적 추가로 보기 버튼 누르기
breakexcept:continuewhileTrue:try:xpath="""//*[@id="SummonerLayoutContent"]/div[2]/div[2]/div/div[2]/div[5]/a"""driver.find_element_by_xpath(xpath).click()# 전적 추가로 보기 버튼 누르기
breakexcept:continuewhileTrue:try:xpath="""//*[@id="SummonerLayoutContent"]/div[2]/div[2]/div/div[2]/div[6]/a"""driver.find_element_by_xpath(xpath).click()# 전적 추가로 보기 버튼 누르기
breakexcept:continuewhileTrue:try:xpath="""//*[@id="SummonerLayoutContent"]/div[2]/div[2]/div/div[2]/div[7]/a"""driver.find_element_by_xpath(xpath).click()# 전적 추가로 보기 버튼 누르기
breakexcept:continuetime.sleep(5)
html 모두 긁어오기
page=driver.page_sourcesoup=BeautifulSoup(page,"html.parser")# print(soup.prettify()) 를 통해 확인할 수 있다
랭크게임 티어와 랭킹알아보기
importre#정규식
fromIPython.displayimportImagefromIPython.core.displayimportHTML#이미지 출력
TierImage=soup.find('div','Medal').find('img','Image')TierImage=TierImage['src']TierImage="https:"+TierImagesoup.find('div','Medal')#티어 이미지
try:soup.find('div','LadderRank')#래더 랭크
LadderRank=soup.find('div','LadderRank').get_text()LadderRank=re.split(('\n|\t'),LadderRank)LadderRank="".join(LadderRank)except:LadderRank='랭크기록이 없습니다.'soup.find('div','SummonerRatingMedium')#랭크게임 정보
SummonerRatingMedium=soup.find('div','SummonerRatingMedium').get_text()SummonerRatingMedium=re.split(('\n|\t'),SummonerRatingMedium)SummonerRatingMedium=" ".join(SummonerRatingMedium)SummonerRatinglist=SummonerRatingMedium.strip().split('/')
MostChampionContent_df={'Champ':Champ,'CS':CS,'KDARatio':KDARatio,'K':K,'D':D,'A':A,'WinRatio':WinRatio,'PlayedGames':PlayedGames}MCC_df=pd.DataFrame(MostChampionContent_df)MCC_df.set_index('Champ',inplace=True)print('가장 많이 플레이한 챔피언')MCC_df
# GameResult 와 index를 key로 만든후 카운트 한다.
grouped2=Recent_Games2[['K']].groupby([Recent_Games2.index,Recent_Games2['GameResult']])grouped3=grouped2.count()WinRatio=[]fortmpinRecent_Games3.index:try:grouped_vic=grouped3.loc[(tmp,'승리'),'K']except:grouped_vic=0try:grouped_def=grouped3.loc[(tmp,'패배'),'K']except:grouped_def=0grouped_wr=grouped_vic/(grouped_vic+grouped_def)*100grouped_wr=round(grouped_wr,2)WinRatio.append(grouped_wr)Recent_Games3['WinRatio']=WinRatioRecent_Games3=Recent_Games3[Recent_Games3['PlayedGames']>=5].sort_values(by=['PlayedGames'],axis=0,ascending=False)Recent_Games3
InteractiveShell.ast_node_interactivity="all"print("===>> 최근 100경기 분석(5판이상 플레이한 챔피언 기준)")Recent_Games3print("===>> 최근 100경기 승률 : {}%\n===>> 평점 : {}점\n===>> 평균 분당cs : {}개\n===>> 평균 킬관여율 : {}%".format(Total_wr,Total_KDA,Total_cs,Total_CKRate))
===>> 최근 100경기 분석(5판이상 플레이한 챔피언 기준)
CS_min
K
D
A
CKRate
KDA
PlayedGames
WinRatio
ChampionName
바이
4.84
5.50
5.73
6.77
48.91
2.14
22
50.00
아트록스
4.69
3.33
5.87
5.40
37.80
1.49
15
42.86
블리츠크랭크
1.17
2.75
4.83
11.25
55.92
2.90
12
50.00
조이
4.38
4.00
7.44
5.00
39.11
1.21
9
11.11
세트
5.01
5.88
5.25
8.00
39.50
2.64
8
50.00
노틸러스
1.33
2.50
5.50
9.17
48.33
2.12
6
33.33
미스 포츈
7.78
6.40
5.40
8.00
51.20
2.67
5
60.00
===>> 최근 100경기 승률 : 41.41%
===>> 평점 : 2.03점
===>> 평균 분당cs : 4.06개
===>> 평균 킬관여율 : 44.85%