Python爬虫获取op.gg英雄联盟英雄对位胜率的源码


Posted in Python onJanuary 29, 2021

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

主要思路

op.gg网站

Python爬虫获取op.gg英雄联盟英雄对位胜率的源码

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

Python爬虫获取op.gg英雄联盟英雄对位胜率的源码

通过开发者工具找到对应部位源码,发现数据就在源码中,证明这是一个静态数据,确定使用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爬虫英雄联盟内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python设置检查点简单实现代码
Jul 01 Python
python django 增删改查操作 数据库Mysql
Jul 27 Python
uwsgi+nginx部署Django项目操作示例
Dec 04 Python
Python中单线程、多线程和多进程的效率对比实验实例
May 14 Python
树莓派采用socket方式文件传输(python)
Jun 22 Python
在pycharm中为项目导入anacodna环境的操作方法
Feb 12 Python
python图片剪裁代码(图片按四个点坐标剪裁)
Mar 10 Python
解决tensorflow读取本地MNITS_data失败的原因
Jun 22 Python
实例讲解Python 迭代器与生成器
Jul 08 Python
Python中BeautifulSoup通过查找Id获取元素信息
Dec 07 Python
Django实现聊天机器人
May 31 Python
Python 多线程处理任务实例
Nov 07 Python
python中spy++的使用超详细教程
Jan 29 #Python
Python Selenium破解滑块验证码最新版(GEETEST95%以上通过率)
Jan 29 #Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
Jan 29 #Python
如何用python开发Zeroc Ice应用
Jan 29 #Python
详解Pymongo常用查询方法总结
Jan 29 #Python
Python3使用tesserocr识别字母数字验证码的实现
Jan 29 #Python
Python爬取梨视频的示例
Jan 29 #Python
You might like
php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
2013/08/13 PHP
php使用ob_start()实现图片存入变量的方法
2014/11/14 PHP
使用XHGui来测试PHP性能的教程
2015/07/03 PHP
PHP之图片上传类实例代码(加了缩略图)
2016/06/30 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
PHP常用正则表达式精选(推荐)
2019/05/28 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
2020/05/02 PHP
javascript中的float运算精度实例分析
2010/08/21 Javascript
JS获取月的最后一天与JS得到一个月份最大天数的实例代码
2013/12/16 Javascript
文本框文本自动补全效果示例分享
2014/01/19 Javascript
javascript常用的正则表达式实例
2014/05/15 Javascript
三种取消选中单选框radio的方法
2014/09/09 Javascript
JQuery拖动表头边框线调整表格列宽效果代码
2014/09/10 Javascript
常用的js验证和数据处理总结
2016/08/02 Javascript
jQuery实现的多张图无缝滚动效果【测试可用】
2016/09/12 Javascript
jquery实现的回旋滚动效果完整实例【附demo源码下载】
2016/09/20 Javascript
WEB开发之注册页面验证码倒计时代码的实现
2016/12/15 Javascript
JS实现的简单轮播图运动效果示例
2016/12/22 Javascript
jQuery实现的简单排序功能示例【冒泡排序】
2017/01/13 Javascript
Vue渲染函数详解
2017/09/15 Javascript
es6系列教程_ Map详解以及常用api介绍
2017/09/25 Javascript
在vue项目中利用popstate处理页面返回的操作介绍
2020/08/06 Javascript
Python实现微信公众平台自定义菜单实例
2015/03/20 Python
python中实现延时回调普通函数示例代码
2017/09/08 Python
Python爬虫番外篇之Cookie和Session详解
2017/12/27 Python
删除python pandas.DataFrame 的多重index实例
2018/06/08 Python
python对html过滤处理的方法
2018/10/21 Python
利用python如何在前程无忧高效投递简历
2019/05/07 Python
使用Python中的reduce()函数求积的实例
2019/06/28 Python
使用Python脚本zabbix自定义key监控oracle连接状态
2019/08/28 Python
通过python连接Linux命令行代码实例
2020/02/18 Python
运动鞋、足球鞋和慕尼黑球衣:Sport Münzinger
2019/08/26 全球购物
工作所在部门证明
2014/09/21 职场文书
第一军规观后感
2015/06/12 职场文书
《秋天的怀念》教学反思
2016/02/17 职场文书
java中用float时,数字后面加f,这样是为什么你知道吗
2021/09/04 Java/Android