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在linux中输出带颜色的文字的方法
Jun 19 Python
Swift 3.0在集合类数据结构上的一些新变化总结
Jul 11 Python
解决Python的str强转int时遇到的问题
Apr 09 Python
Python实现时钟显示效果思路详解
Apr 11 Python
Python使用ConfigParser模块操作配置文件的方法
Jun 29 Python
python 将print输出的内容保存到txt文件中
Jul 17 Python
解决python3 pika之连接断开的问题
Dec 18 Python
在python下使用tensorflow判断是否存在文件夹的实例
Jun 10 Python
详解python编译器和解释器的区别
Jun 24 Python
Python的控制结构之For、While、If循环问题
Jun 30 Python
python模拟点击玩游戏的实例讲解
Nov 26 Python
Python调用SMTP服务自动发送Email的实现步骤
Feb 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制作图型计数器的例子
2006/10/09 PHP
php Hex RGB颜色值互换的使用
2013/05/10 PHP
解析mysql中UNIX_TIMESTAMP()函数与php中time()函数的区别
2013/06/24 PHP
PHP和C#可共用的可逆加密算法详解
2015/10/26 PHP
一个简单的php路由类
2016/05/29 PHP
图片无缝滚动代码(向左/向下/向上)
2013/04/10 Javascript
jQuery中dequeue()方法用法实例
2014/12/29 Javascript
jQuery中parent()方法用法实例
2015/01/07 Javascript
CSS3实现动态背景登录框的代码
2015/07/28 Javascript
浅谈javascript的Array.prototype.slice.call
2015/08/31 Javascript
基于jQuery实现搜索关键字自动匹配功能
2020/03/26 Javascript
canvas学习之API整理笔记(二)
2016/12/29 Javascript
AngularJS 使用ng-repeat报错 [ngRepeat:dupes]
2017/01/19 Javascript
JavaScript中创建对象的7种模式详解
2017/02/21 Javascript
了解ESlint和其相关操作小结
2018/05/21 Javascript
微信小程序scroll-view点击项自动居中效果的实现
2020/03/25 Javascript
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
[01:00:17]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第二场 1月25日
2021/03/11 DOTA
Python Socket传输文件示例
2017/01/16 Python
python 执行shell命令并将结果保存的实例
2018/05/11 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
2019/04/01 Python
python实现的接收邮件功能示例【基于网易POP3服务器】
2019/09/11 Python
python中的itertools的使用详解
2020/01/13 Python
Django 解决阿里云部署同步数据库报错的问题
2020/05/14 Python
俄罗斯鲜花递送:AMF
2020/04/24 全球购物
linux面试题参考答案(9)
2016/01/29 面试题
销售辞职报告范文
2014/01/12 职场文书
优秀少先队员主要事迹材料
2014/05/28 职场文书
中国梦演讲稿范文
2014/08/28 职场文书
欧也妮葛朗台读书笔记
2015/06/30 职场文书
新教师2015年度工作总结
2015/07/22 职场文书
2016年世界人口日宣传活动总结
2016/04/05 职场文书
MySQL系列之七 MySQL存储引擎
2021/07/02 MySQL
docker compose 部署 golang 的 Athens 私有代理问题
2022/04/28 Servers
js前端设计模式优化50%表单校验代码示例
2022/06/21 Javascript
vue3 自定义图片放大器效果的示例代码
2022/07/23 Vue.js