Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
作者:qq_46480884 发布时间:2024-01-02 13:03:52
标签:Python,op.gg,爬虫,英雄联盟
通过第三方BeautifulSoup库来爬取op.gg网页静态数据
主要思路
op.gg网站
网站以出场率高低排名,并且列出对位胜率,在高出场率的前提下,胜率有很大的参考意义,在counter位很有帮助
通过开发者工具找到对应部位源码,发现数据就在源码中,证明这是一个静态数据,确定使用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方便输入。
来源:https://blog.csdn.net/qq_46480884/article/details/113242720
0
投稿
猜你喜欢
- Timer: 隔一定时间调用一个函数,如果想实现每隔一段时间就调用一个函数的话,就要在Timer调用的函数中,再次设置Timer。Timer
- 本文实例讲述了python实现自动登录人人网并采集信息的方法。分享给大家供大家参考。具体实现方法如下:#!/usr/bin/python#
- try: 语句测试代码块的错误,一般把可能会出错的代码放到这里 catch: 只有try里面的代码块发生错误时,才会执行这里的代
- 最近疫情比较严重,很多公司依靠阿里旗下的办公软件钉钉来进行远程办公,当然了,钉钉这个产品真的是让人一言难尽,要多难用有多难用,真的让人觉得阿
- Microsoft Access 数据库 (.mdb) 文件大小2 G 字节。不
- 本文实例为大家分享了vue简单实现购物车结算的具体代码,供大家参考,具体内容如下样式没有写<template> <
- numpy和matlab的几点差异Python numpy和matlab都是便捷灵活的科学计算语言,两者具有很多相似之处,但也有一些混淆的地
- 在家里windows环境下搞了一次见 python MySQLdb在windows环境下的快速安装、问题解决方式ht
- /** * 得到XML文件属性的集合对象 * @param x
- memoryview() 函数返回给定参数的内存查看对象(Momory view)。语法memoryview 语法:memoryview(o
- 这个类主要解决在类型转换时,如果直接使用类型转换函数,会因为变量为空或者格式不对而导致程序报错,而这种报错在大多数情况下是允许的.例如要转换
- 如下所示:ffmpeg中文文档:http://linux.51yip.com/search/ffmpegffmpeg -i test_bao
- 如下表:先使用str_to_date函数,将其varchar类型转为日期类型,然后从小到大排序语法:select str_to_date(c
- 前言复习试题时,发现一道复数问题问题关于 Python 的复数类型,以下选项中描述错误的是A复数的虚数部分通过后缀“J”或者“j”来表示B对
- 理论知识部分:一、简单总结几点数据库测试点:1.检查接口返回的数据是否与预期一致2.传递数据类型错误时能否处理,比如数据类型要求是整数,传递
- 在Python中的break语句终止当前循环,继续执行下一个语句,就像C语言中的break一样。break最常见的用途是当一些外
- 这几天研究HUE,这个东西是基于Django开发的,于是又看了一眼Django,学着写个demo。微软开源的vscode在业界反应不错,以前
- 前言MySQL 事务隔离级别是为了解决并发事务互相干扰的问题的,MySQL 事务隔离级别总共有以下 4 种:READ UNCOMMITTED
- 1. mean() 函数定义:numpy.mean(a, axis=None, dtype=None, out=None, keepdims
- 本文实例讲述了js实现向右横向滑出的二级菜单效果。分享给大家供大家参考。具体如下:这是一个网页上的横向滑出二级菜单,菜单是竖向排列的,但二级