通过第三方beautifulsoup库来爬取op.gg网页静态数据

主要思路

网站以出场率高低排名,并且列出对位胜率,在高出场率的前提下,胜率有很大的参考意义,在counter位很有帮助

通过开发者工具找到对应部位源码,发现数据就在源码中,证明这是一个静态数据,确定使用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','发条':'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'}
#由于网站反爬虫机制,使用请求通来伪装成浏览器,否则会被检测为爬虫,爬取数据失败
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发出请求,将请求头传入,返回结果保留在res中,res为response对象
res = requests.get('http://www.op.gg/champion/{}/statistics/{}/matchup'.format(myname,position),headers=headers)
#res.text是要解析的网页源代码,html。parser是python的解析器
soup = beautifulsoup(res.text,'html.parser')

#find方法返回tag对象,find_all返回有tag对象组成的列表,tag是beautifsoup中的对象
#查找class属性为champion-matchup-champion-list__item的div标签,组成名为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属性值为查找的英雄胜率,这里转换为供选择的英雄胜率
 rate = 1-float(i['data-value-winrate'])
 print(name,'{}%'.format(round(rate*100,2)))

由于网址为英文,英雄英文名字个别十分难记难拼,所以我在字典中以中文名或者耳熟能详的外号为key,以url中英雄英文名为value,进行输入转换。
位置使用top,jun,mid,ad,sup方便输入。

到此这篇关于python爬虫获取op.gg英雄联盟英雄对位胜率的源码的文章就介绍到这了,更多相关python爬虫英雄联盟内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!