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如何拆分含有多种分隔符的字符串
Mar 20 Python
基于scrapy的redis安装和配置方法
Jun 13 Python
python3爬虫获取html内容及各属性值的方法
Dec 17 Python
Python写一个基于MD5的文件监听程序
Mar 11 Python
Pandas之Dropna滤除缺失数据的实现方法
Jun 25 Python
python的pyecharts绘制各种图表详细(附代码)
Nov 11 Python
Python3 字典dictionary入门基础附实例
Feb 10 Python
jupyter notebook实现显示行号
Apr 13 Python
使用python创建生成动态链接库dll的方法
May 09 Python
520使用Python实现“我爱你”表白
May 20 Python
使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例
Dec 11 Python
python绘制简单直方图(质量分布图)的方法
Apr 21 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 调试环境(IIS+PHP+MYSQL)
2007/01/10 PHP
Base64在线编码解码实现代码 演示与下载
2011/01/08 PHP
浅析PHP中的字符串编码转换(自动识别原编码)
2013/07/02 PHP
Symfony2学习笔记之系统路由详解
2016/03/17 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
php实现数字补零的方法总结
2018/09/12 PHP
页面中js执行顺序
2009/11/09 Javascript
JQuery扩展插件Validate—6 radio、checkbox、select的验证
2011/09/05 Javascript
js 实现日期灵活格式化的小例子
2013/07/14 Javascript
Javascript中克隆一个数组的实现代码
2013/12/06 Javascript
jQuery实现动画效果circle实例
2015/08/06 Javascript
深入剖析JavaScript编程中的对象概念
2015/10/21 Javascript
Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面
2016/07/01 Javascript
Vue.js快速入门教程
2016/09/07 Javascript
jQuery.Validate表单验证插件的使用示例详解
2017/01/04 Javascript
基于JS代码实现简单易用的倒计时 x 天 x 时 x 分 x 秒效果
2017/07/13 Javascript
vue-cli脚手架-bulid下的配置文件
2018/03/27 Javascript
vue .sync修饰符的使用详解
2018/06/15 Javascript
nodejs微信开发之接入指南
2019/03/17 NodeJs
原生js通过一行代码实现简易轮播图
2019/06/05 Javascript
[01:00:25]NB vs Secret 2018国际邀请赛小组赛BO1 B组加赛 8.19
2018/08/21 DOTA
Python计算三维矢量幅度的方法
2015/06/15 Python
在Python的Django框架中包装视图函数
2015/07/20 Python
利用Python中unittest实现简单的单元测试实例详解
2017/01/09 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
2019/08/31 Python
keras 获取某层的输入/输出 tensor 尺寸操作
2020/06/10 Python
python Gabor滤波器讲解
2020/10/26 Python
美国旅游网站:Tours4Fun
2017/02/17 全球购物
小天鹅官方商城:LittleSwan
2017/06/16 全球购物
JSF面试题:如何管量web层中的Bean,用什么标签。如何通过jsp页面与Bean绑定在一起进行处理?
2012/10/05 面试题
Java里面Pass by value和Pass by Reference是什么意思
2016/05/02 面试题
家庭教育先进个人事迹材料
2014/01/24 职场文书
人力资源管理毕业求职信
2014/08/05 职场文书
侵犯商业秘密的律师函
2015/05/27 职场文书
研讨会致辞
2015/07/31 职场文书
Centos7 Shell编程之正则表达式、文本处理工具详解
2022/08/05 Servers