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开发的nosql数据库CodernityDB介绍和使用实例
Oct 23 Python
Python内置的HTTP协议服务器SimpleHTTPServer使用指南
Mar 30 Python
python脚本实现数据导出excel格式的简单方法(推荐)
Dec 30 Python
Python实现邮件的批量发送的示例代码
Jan 23 Python
python 爬虫 批量获取代理ip的实例代码
May 22 Python
Python Logging 日志记录入门学习
Jun 02 Python
详解Numpy中的广播原则/机制
Sep 20 Python
在Pycharm中项目解释器与环境变量的设置方法
Oct 29 Python
pyttsx3实现中文文字转语音的方法
Dec 24 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
Mar 03 Python
PyQt5的QWebEngineView使用示例
Oct 20 Python
Python各协议下socket黏包问题原理
Apr 12 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
Win下如何安装PHP的APC拓展
2013/08/07 PHP
php自定义的格式化时间示例代码
2013/12/05 PHP
PHP字符串word末字符实现大小写互换的方法
2014/11/10 PHP
验证用户是否修改过页面的数据的实现方法
2008/09/26 Javascript
lyhucSelect基于Jquery的Select数据联动插件
2011/03/29 Javascript
用Juery网页选项卡实现代码
2011/06/13 Javascript
JavaScript之Getters和Setters 平台支持等详细介绍
2012/12/07 Javascript
jQuery.validate 常用方法及需要注意的问题
2013/03/20 Javascript
jquery简单实现鼠标经过导航条改变背景图
2013/12/17 Javascript
JQuery获取表格数据示例代码
2014/05/26 Javascript
javascript中scrollTop详解
2015/04/13 Javascript
jQuery实现可用于博客的动态滑动菜单完整实例
2015/09/17 Javascript
基于JS实现PHP的sprintf函数实例
2015/11/14 Javascript
angularjs创建弹出框实现拖动效果
2020/08/25 Javascript
jquery ajax局部加载方法详解(实现代码)
2016/05/12 Javascript
js中遍历Map对象的方法
2016/07/27 Javascript
浅谈事件冒泡、事件委托、jQuery元素节点操作、滚轮事件与函数节流
2017/07/22 jQuery
浅谈express 中间件机制及实现原理
2017/08/31 Javascript
67 个节约开发时间的前端开发者的工具、库和资源
2017/09/12 Javascript
详解webpack模块化管理和打包工具
2018/04/21 Javascript
JavaScript对象拷贝与Object.assign用法实例分析
2018/06/20 Javascript
详解微信小程序支付流程与梳理
2019/07/16 Javascript
javascript实现留言板功能
2020/02/08 Javascript
Vue中使用wangeditor富文本编辑的问题
2021/02/07 Vue.js
python调用机器喇叭发出蜂鸣声(Beep)的方法
2015/03/23 Python
利用Python的Twisted框架实现webshell密码扫描器的教程
2015/04/16 Python
Python中转换角度为弧度的radians()方法
2015/05/18 Python
PyTorch搭建一维线性回归模型(二)
2019/05/22 Python
基于Python绘制美观动态圆环图、饼图
2020/06/03 Python
Python+OpenCV图像处理—— 色彩空间转换
2020/10/22 Python
蛋白质世界:Protein World
2017/11/23 全球购物
农业大学毕业生的个人自我评价
2013/10/11 职场文书
企业挂职心得体会
2014/09/10 职场文书
酒店工程部经理岗位职责
2015/04/09 职场文书
信用卡工资证明范本
2015/06/19 职场文书
canvas 中如何实现物体的框选
2022/08/05 Javascript