Python爬蟲獲取op.gg英雄聯(lián)盟英雄對位勝率的源碼
通過第三方BeautifulSoup庫來爬取op.gg網(wǎng)頁靜態(tài)數(shù)據(jù)
主要思路
網(wǎng)站以出場率高低排名,并且列出對位勝率,在高出場率的前提下,勝率有很大的參考意義,在counter位很有幫助
通過開發(fā)者工具找到對應(yīng)部位源碼,發(fā)現(xiàn)數(shù)據(jù)就在源碼中,證明這是一個靜態(tài)數(shù)據(jù),確定使用BeautifulSoup庫。
源碼
import requests from bs4 import BeautifulSoup championname={'阿卡麗 ':'akali','牛頭':'alistar','阿木木':'amumu','冰鳥':'anivia','安妮':'annie','艾希':'ashe','機器人':'blitzcrank','火男':'brand','女警':'caitlyn', '蛇女':'cassiopeia','大蟲子':'chogath','飛機':'corki','諾手':'darius','皎月':'diana','蒙多':'drmundo','德萊文':'delevin','蜘蛛':'elise', '寡婦':'evelynn','ez':'ezreal','稻草人':'fiddlesticks','劍姬':'fiora','魚人':'fizz','加里奧':'galio','船長':'gangplank','蓋倫':'garen', '酒桶':'gragas','人馬':'hecarim','大頭':'heimerdinger','刀妹':'irelia','鳳女':'janna','皇子':'jarvaniv','賈克斯':'jax','杰斯':'jayce','卡爾瑪':'karma', '死歌':'karthus','卡薩丁':'kassadin','卡特':'katarina','天使':'kayle','凱南':'kennen','螳螂':'khazix','大嘴':'kogmaw','妖姬':'leblanc','盲僧':'leesin','女坦':'Leona','露露':'lulu','拉克絲':'Lux', '石頭人':'Malphite','馬爾扎哈':'Malzahar','大樹':'Maokai','劍圣':'Yi','女槍':'MissFortune','猴子':'Monkeyking','鐵男':'Mordekaiser','莫甘娜':'Morgana' ,'娜美':'Nami','狗頭':'Nasus','泰坦':'Nautilus','豹女':'Nidalee','夢魘':'Nocturne','雪人':'Nunu','奧拉夫':'Olaf','發(fā)條':'Orianna','潘森':'Pantheon','波比':'Poopy','龍龜':'Rammus','鱷魚':'Renekton','獅子狗':'Rengar', '瑞文':'Rivan','蘭博':'Rumble','瑞茲':'Ryze','豬女':'Sejuani','小丑':'Shaco','慎':'Shen','龍女':'Shyvana','煉金':'Singed','塞恩':'Sion','希維爾':'Sivir','蝎子':'Skarner','琴女':'Sona','奶媽':'Soraka','烏鴉':'Swain','辛德拉':'Syndra' ,'男刀':'Talon','寶石':'Taric','提莫':'Teemo','錘石':'Thresh','小炮':'Tristana','巨魔':'Trundle','蠻王':'Tryndamere','卡牌':'TwistedFate','老鼠':'Twitch','烏迪爾':'Udyr','厄加特':'Urgot','維魯斯':'Varus','薇恩':'Vayne', '小法':'Veigar','蔚':'Vi','維克托':'Viktor','吸血鬼':'Vladimir','狗熊':'Volibear','狼人':'Warwick','澤拉斯':'Xerath','趙信':'XinZhao','掘墓':'Yorick','劫':'Zed','炸彈人':'Ziggs','時光':'Zilean','婕拉':'Zyra','佐伊':'zoe','永恩':'yone','薩米拉':'samira','亞索':'yasuo', '塞拉斯':'sylas','盧錫安':'lucian','艾克':'ekko','阿貍':'ahri','瑟提':'sett','奇亞娜':'qiyana','龍王':'aurelionsol','克烈':'kled','妮蔻':'neeko' } position_all = {'top':'top','jun':'jungle','mid':'mid','ad':'bot','sup':'support'} #由于網(wǎng)站反爬蟲機制,使用請求通來偽裝成瀏覽器,否則會被檢測為爬蟲,爬取數(shù)據(jù)失敗 headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36'} name_input = input('輸入名字:') myname = championname[name_input] myposition = input('輸入位置:') position = position_all[myposition] print('正在查詢,請稍等~~~') #向url發(fā)出請求,將請求頭傳入,返回結(jié)果保留在res中,res為response對象 res = requests.get('http://www.op.gg/champion/{}/statistics/{}/matchup'.format(myname,position),headers=headers) #res.text是要解析的網(wǎng)頁源代碼,html。parser是python的解析器 soup = BeautifulSoup(res.text,'html.parser') #find方法返回tag對象,find_all返回有tag對象組成的列表,tag是BeautifSoup中的對象 #查找class屬性為champion-matchup-champion-list__item的div標(biāo)簽,組成名為items的列表 items = soup.find_all('div',class_='champion-matchup-champion-list__item') print('英雄 勝率') for i in items: #div中的data-champion-name屬性值為英雄名字 name = i['data-champion-name'] #div屬性中的data-value-winrate屬性值為查找的英雄勝率,這里轉(zhuǎn)換為供選擇的英雄勝率 rate = 1-float(i['data-value-winrate']) print(name,'{}%'.format(round(rate*100,2)))
由于網(wǎng)址為英文,英雄英文名字個別十分難記難拼,所以我在字典中以中文名或者耳熟能詳?shù)耐馓枮閗ey,以url中英雄英文名為value,進行輸入轉(zhuǎn)換。
位置使用top,jun,mid,ad,sup方便輸入。
到此這篇關(guān)于Python爬蟲獲取op.gg英雄聯(lián)盟英雄對位勝率的源碼的文章就介紹到這了,更多相關(guān)Python爬蟲英雄聯(lián)盟內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Anaconda中更新當(dāng)前環(huán)境的Python版本詳細步驟
Anaconda是一個開源的Python發(fā)行版本,其包含了conda、Python等180多個科學(xué)包及其依賴項,下面這篇文章主要給大家介紹了關(guān)于Anaconda中更新當(dāng)前環(huán)境的Python版本的詳細步驟,需要的朋友可以參考下2024-08-08pandas 實現(xiàn)將NaN轉(zhuǎn)換為None
這篇文章主要介紹了pandas 實現(xiàn)將NaN轉(zhuǎn)換為None的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05Win10下用Anaconda安裝TensorFlow(圖文教程)
這篇文章主要介紹了Win10下用Anaconda安裝TensorFlow(圖文教程),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06如何使用pandas讀取txt文件中指定的列(有無標(biāo)題)
這篇文章主要介紹了如何使用pandas讀取txt文件中指定的列(有無標(biāo)題),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03Android模擬器無法啟動,報錯:Cannot set up guest memory ‘a(chǎn)ndroid_arm’ I
這篇文章主要介紹了Android模擬器無法啟動,報錯:Cannot set up guest memory ‘a(chǎn)ndroid_arm’ Invalid argument的解決方法,通過模擬器ram設(shè)置的調(diào)整予以解決,需要的朋友可以參考下2016-07-07Python實現(xiàn)不一樣的猜數(shù)字游戲的示例代碼
大家知道“猜數(shù)字”這個游戲嗎?顧名思義就是一個人想一個數(shù)字,另一個人猜。本文就來用Python實現(xiàn)一款不一樣的猜數(shù)字游戲,感興趣的可以了解一下2023-02-02