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中第三方库Requests库的高级用法详解
Mar 12 Python
python 与GO中操作slice,list的方式实例代码
Mar 20 Python
Python编程实现生成特定范围内不重复多个随机数的2种方法
Apr 14 Python
Python爬豆瓣电影实例
Feb 23 Python
python入门教程 python入门神图一张
Mar 05 Python
Python cookbook(数据结构与算法)根据字段将记录分组操作示例
Mar 19 Python
python实现简单http服务器功能
Sep 17 Python
python生成带有表格的图片实例
Feb 03 Python
windows下Python安装、使用教程和Notepad++的使用教程
Oct 06 Python
在django admin详情表单显示中添加自定义控件的实现
Mar 11 Python
pdf论文中python画的图Type 3 fonts字体不兼容的解决方案
Apr 24 Python
DjangoRestFramework 使用 simpleJWT 登陆认证完整记录
Jun 22 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正则提取不包含指定网址的图片地址的例子
2014/04/21 PHP
javascript间隔定时器(延时定时器)学习 间隔调用和延时调用
2014/01/13 Javascript
javascript操作referer详细解析
2014/03/10 Javascript
js实现的点击div区域外隐藏div区域
2014/06/30 Javascript
JQuery中attr方法和removeAttr方法用法实例
2015/05/18 Javascript
基于JS设计12306登录页面
2016/12/28 Javascript
vue 里面使用axios 和封装的示例代码
2017/09/01 Javascript
bootstrap treeview 扩展addNode方法动态添加子节点的方法
2017/11/21 Javascript
element ui里dialog关闭后清除验证条件方法
2018/02/26 Javascript
React props和state属性的具体使用方法
2018/04/12 Javascript
vue.extend实现alert模态框弹窗组件
2018/04/28 Javascript
简述JS浏览器的三种弹窗
2018/07/15 Javascript
关于layui的下拉搜索框异步加载数据的解决方法
2019/09/28 Javascript
基于JavaScript实现大文件上传后端代码实例
2020/08/18 Javascript
JavaScript canvas实现雨滴特效
2021/01/10 Javascript
[50:27]OG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/30 DOTA
python使用urllib模块和pyquery实现阿里巴巴排名查询
2014/01/16 Python
Python 模板引擎的注入问题分析
2017/01/01 Python
TensorFlow Session会话控制&Variable变量详解
2018/07/30 Python
Python 移动光标位置的方法
2019/01/20 Python
Python使用Pandas库实现MySQL数据库的读写
2019/07/06 Python
Python 字符串、列表、元组的截取与切片操作示例
2019/09/17 Python
10行Python代码计算汽车数量的实现方法
2019/10/23 Python
基于Python+Appium实现京东双十一自动领金币功能
2019/10/31 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
2020/05/23 Python
如何清空python的变量
2020/07/05 Python
解决Python安装cryptography报错问题
2020/09/03 Python
python 将Excel转Word的示例
2021/03/02 Python
法国二手手袋、手表和奢侈珠宝购物网站:Collector Square
2018/07/05 全球购物
学生拾金不昧表扬信
2014/01/21 职场文书
妈妈活动方案
2014/08/15 职场文书
单位工作证明
2014/10/07 职场文书
党员群众路线教育实践活动学习笔记
2014/11/05 职场文书
劳动模范获奖感言
2015/07/31 职场文书
2016年小学生新年寄语
2015/08/18 职场文书
Vue中插槽slot的使用方法与应用场景详析
2021/06/08 Vue.js