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 07 Python
Python网络编程使用select实现socket全双工异步通信功能示例
Apr 09 Python
python如何爬取个性签名
Jun 19 Python
Python中 map()函数的用法详解
Jul 10 Python
浅谈Python里面小数点精度的控制
Jul 16 Python
Python 输出时去掉列表元组外面的方括号与圆括号的方法
Dec 24 Python
python调用外部程序的实操步骤
Mar 04 Python
详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)
Jul 01 Python
PYTHON发送邮件YAGMAIL的简单实现解析
Oct 28 Python
Python 元组拆包示例(Tuple Unpacking)
Dec 24 Python
Django用数据库表反向生成models类知识点详解
Mar 25 Python
OpenCV-Python实现轮廓拟合
Jun 08 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解析url并得到url参数方法总结
2018/10/11 PHP
PHP单例模式应用示例【多次连接数据库只实例化一次】
2018/12/18 PHP
IE中jscript/javascript的条件编译
2006/09/07 Javascript
在IE6下发生Internet Explorer cannot open the Internet site错误
2010/06/21 Javascript
JavaScript随机排序(随即出牌)
2010/09/17 Javascript
JS小功能(列表页面隔行变色)简单实现
2013/11/28 Javascript
Android中的jQuery:AQuery简介
2014/05/06 Javascript
javascript比较两个日期的先后示例代码
2014/12/31 Javascript
Javascript通过overflow控制列表闭合与展开的方法
2015/05/15 Javascript
jQuery实时显示鼠标指针位置和键盘ASCII码
2016/03/28 Javascript
结合代码图文讲解JavaScript中的作用域与作用域链
2016/07/05 Javascript
AngularJS基础 ng-model-options 指令简单示例
2016/08/02 Javascript
canvas实现动态小球重叠效果
2017/02/06 Javascript
ES6学习教程之模板字符串详解
2017/10/09 Javascript
微信接入之获取用户头像的方法步骤
2019/09/23 Javascript
Vue 实现简易多行滚动"弹幕"效果
2020/01/02 Javascript
微信小程序录音实现功能并上传(使用node解析接收)
2020/02/26 Javascript
Node.js中文件系统fs模块的使用及常用接口
2020/03/06 Javascript
Python中自定义函数的教程
2015/04/27 Python
Python中几种导入模块的方式总结
2017/04/27 Python
python实现txt文件格式转换为arff格式
2018/05/31 Python
详解python中的json和字典dict
2018/06/22 Python
python 3调用百度OCR API实现剪贴板文字识别
2018/09/04 Python
如何使用Flask-Migrate拓展数据库表结构
2019/07/24 Python
python ctypes库2_指定参数类型和返回类型详解
2019/11/19 Python
Python 解码Base64 得到码流格式文本实例
2020/01/09 Python
python系统指定文件的查找只输出目录下所有文件及文件夹
2020/01/19 Python
Python与C/C++的相互调用案例
2021/03/04 Python
车库门开启器、遥控器和零件:Chamberlain
2019/04/09 全球购物
校园安全检查制度
2014/02/03 职场文书
妇女儿童发展规划实施方案
2014/03/16 职场文书
2014年团队工作总结
2014/11/24 职场文书
2015个人半年总结范文
2015/03/09 职场文书
2016年公司“3.12”植树节活动总结
2016/03/16 职场文书
springboot 多数据源配置不生效遇到的坑及解决
2021/11/17 Java/Android
python如何利用cv2.rectangle()绘制矩形框
2022/12/24 Python