爬虫之爬取英雄联盟战绩详细数据

思路解析:

我们首先打开LOL游戏官网,登录自己的账号(因为牵扯到账号,所以需要用到cookie),然后选择你想爬取数据的大区!
在这个界面我们按下F12查看源代码,在Network下的JS里,刚开始什么都没有,我们需要重新加载网页然后才会显示各种数据

如果你看下除了第一个?c=Battle的其他相同名字数据就会发现,下面的每一条数据正好对应着左侧的每一局游戏,我们点开几个游戏数据,在general的url里发现只有一个参数变了,那就是gameId,这个gameId在哪里得到的呢?就是从第一条?c=Battle的数据里得来的.

这里我们找到了gameId的位置,只要把所有的gameId得到,就可以进一步提取每一局的游戏数据了

我们通过第一条游戏数据,找到队伍里自己的位置,我是在第六的位置,然后在stats里就是自己的详细游戏数据了,我们这次要爬取的数据主要就是在这里.

我们看下gameId的获取方式,知道url,请求方式为get,接下来就可以上代码了

第一部分,获取gameIds

import requests,json #导入模块
url = 'https://lol.sw.game.qq.com/lol/api/?c=Battle&a=matchList&areaId=30&accountId=4007807286&queueId=70,72,73,75,76,78,96,98,100,300,310,313,317,318,3'#太长了,输入你自己的网址就行了
headers = {'Cookie':'因太长,写入你自己的就可以了','User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML,             like Gecko) Chrome/80.0.3987.122 Safari/537.36'}#防止反爬虫
#获取网页源代码
res = requests.get(url,headers = headers) #解析这个网页
print(res.status.code)#状态码为200说明正常
print(res.text) #打印看看是不是有很多数据,有就对了,如果只有两行说明哪地方出错了
json = json.loads(res.text[16:]) #因为response的前面16个字符不是json格式的,所有要去除
#获取所有游戏的gameId
games = json['msg']['games'] #获取所有game信息的列表
gameIds = [] #创建一个存放gameId的列表
for game in games:gameId = game['gameId']gameIds.append(gameId)
print(gameIds) #打印看看有多少gameId **如果你隔很长时间重新玩的游戏,只能取最近玩的游戏数据,因为他的cookie不一样,所以取全部gameId可能会报错**

代码实际效果

第二部分,获取每局战绩的详细数据

我们先分析每一局游戏的数据,和第一部分一样,根据url和cookie获取网页源代码

import requests,json #导入模块
url2 = 'https://lol.sw.game.qq.com/lol/api/?c=Battle&a=combatGains&areaId=30&gameId=346355077&r1=combatGains'导入一局游戏的url
headers = {'cookie':'输入你的cookie','User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36'}#防止反爬虫
res2 = requests.get(url2,headers=headers)
json2 = json.loads(res2.text[18:])#将源代码前面不是json格式的去掉
participants = json2['msg']['participants']#获取一局游戏10人的战绩列表
找到自己的战绩
for own in participants:if own['summonerName'] =='自己游戏ID':#输入自己的游戏ID,如果匹配,就继续执行下面的代码,否则跳过try: #有的游戏某一项没有数据,例如大乱斗没有插眼数据,用try防止报错,#游戏数据stats = own['stats'] #转到stats这一项中,有战斗数据win = stats['win']  #是否胜利,win为赢,fail为输kills = stats['kills'] #击杀deaths = stats['deaths'] #死亡assists = stats['assists'] #助攻visionWardsBought = stats['visionWardsBoughtInGame']#买的真眼数wardsPlaced = stats['wardsPlaced'] #放置守卫数wardsKilled = stats['wardsKilled'] #击杀守卫数goldEarned = stats['goldEarned'] #游戏挣的金币minionsKilled = stats['minionsKilled'] #击杀小兵inhibitorKills = stats['inhibitorKills'] #摧毁水晶#你还想写什么可以按照这种方法找,游戏模式,使用英雄,出装,伤害等等都可以print(win,kills,deaths,assists,visionWardsBought,wardsPlaced,wardsKilled,goldEarned,minionsKilled,inhibitorKills)#把这些打印出来except:print(i)#输出没游戏数据的gameIdelse:#这是其他9人的数据,如果你想分析也可以下载看看pass
这是一局游戏的数据,如果你想下载所有游戏数据只要加个循环就可以了

所有游戏数据在这里

我只循环了前20项

第三部分,存入Excel,方便可视化

import openpyxl #导入Excel模块
#设置Excel
wb = openpyxl.Workbook() #创建工作簿
ws = wb.active #创建工作表
ws.title = 'LOL数据' #表名为LOL数据
ws.append(['胜负','击杀','死亡','助攻','买眼数','放置守卫数','击杀守卫数','挣金币数','击杀小兵数','摧毁水晶数'])#创建第一行
'''省略获取数据部分''''
try:'''省略'''ws.append([[win,kills,deaths,assists,visionWardsBought,wardsPlaced,wardsKilled,goldEarned,minionsKilled,inhibitorKills])#在循环内部把每一条数据加到表格里
wb.save('LOL数据.xlsx') #保存文件

全部代码在这里


得到的Excel

循环了20次,其中7次大乱斗的数值没有提取,Excel效果如下

第四部分,数据可视化

还没学会,溜了溜了

第一次发表文章…

爬虫之爬取英雄联盟战绩详细数据相关推荐

  1. Python爬虫之简单爬虫之爬取英雄联盟官网的英雄的皮肤

    Python爬虫之简单爬虫之爬取英雄联盟官网的英雄的皮肤 文章目录 Python爬虫之简单爬虫之爬取英雄联盟官网的英雄的皮肤 背景:LOL这款游戏有着大量的玩家,这个游戏里面人们津津乐道的皮肤,每一款 ...

  2. 【Python爬虫】爬取英雄联盟所有皮肤图片实现千图成像~

    前文 本文主要分为两个部分 一部分是爬虫,这边是选择爬取英雄联盟官网英雄资料中的英雄皮肤图片,如下为新英雄seraphine的页面,包含英雄对应的所有皮肤: 另一部分是图片的合成,先将所有英雄皮肤图片 ...

  3. 牛散村:python怎么爬取英雄联盟皮肤图片?爬虫实战!

    相信很多小伙伴都是喜爱英雄联盟的玩家,英雄联盟的皮肤制作还是比较精美的,有收集癖好的小编打算用爬虫将官网的皮肤爬取下来.接下来就看小编怎么用python爬取英雄联盟皮肤吧!(内附python爬虫源代码 ...

  4. 爬虫实战6:爬取英雄联盟官网五个位置的综合排行榜保存到excel

    申明:资料来源于网络及书本,通过理解.实践.整理成学习笔记. 文章目录 英雄联盟官网 获取一个位置的综合排行榜所有数据(上单为例) 获取所有位置的综合排行榜所有数据 英雄联盟官网 获取一个位置的综合排 ...

  5. 爬虫实战(一)—利用requests、mongo、redis代理池爬取英雄联盟opgg实时英雄数据

    概述 可关注微信订阅号 loak 查看实际效果. 代码已托管github,地址为:https://github.com/luozhengszj/LOLGokSpider 包括了项目的所有代码. 此篇文 ...

  6. python3爬虫之多线程爬取英雄联盟所有皮肤图片

    python3爬虫之多线程爬取英雄联盟所有皮肤图片 线程不要太高,容易出错,大约用时1分钟左右. import requests import json import os import thread ...

  7. python桌面爬虫_Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】...

    本文实例讲述了Python3爬虫爬取英雄联盟高清桌面壁纸功能.分享给大家供大家参考,具体如下: 使用Scrapy爬虫抓取英雄联盟高清桌面壁纸 源码地址:https://github.com/snowy ...

  8. python爬虫——爬取英雄联盟英雄基本信息

    爬取英雄联盟英雄基本信息 import requests import re import pymysqldb=pymysql.connect('localhost','root','126315', ...

  9. 【爬虫】使用requests爬取英雄联盟英雄皮肤

    使用requests爬取英雄联盟英雄皮肤 自己做的 import requestsresponse = requests.get("https://game.gtimg.cn/images/ ...

最新文章

  1. Java Web开发乱码问题
  2. numpy matplotlib
  3. index merge的数据结构和成本评估
  4. java 泛型去重_泛型,list集合去重
  5. 首台自主创新全空冷机组在三峡运行,图扑数字孪生机体
  6. LINUX系统配置FTP服务器教程
  7. char在计算机中是什么作用,C语言中char的用法
  8. Jenkins 页面不刷新最新修改配置,需要强制刷新才可以,Request Status Code:200 OK (from disk cache)
  9. Java Web调用Matlab实现在线绘图
  10. 亚马逊云科技的IoT+AI能力覆盖边缘与云,在云端提供稳定的云服务支持
  11. Android下的蓝牙自动配对
  12. DS二叉树—二叉树构建与遍历(不含框架)
  13. Oracle 考试题 原题
  14. 【转】BCWS、BCWP、ACWP的理解
  15. csgo删除机器人_csgo1v1去除机器人 | 手游网游页游攻略大全
  16. android 分享二维码图片到微信QQ(url地址字符串生成二维码图片、分享二维码图片到微信QQ)
  17. 美图秀秀网页版新功能上线 新增磨皮祛痘
  18. 养QQ宠物不花Q币?完全可以!(转)
  19. 【CISSP备考笔记】第6章:安全评估与测试
  20. 【ns-3】添加nr(5G-LENA)模块

热门文章

  1. 鸿蒙系统怎么安装网易云音乐,网易云音乐鸿蒙版 - 魔法系统之家下载
  2. @Value为啥取不到值
  3. 数字地球与计算机技术联系,数字地球与现代测绘科学的发展问题
  4. 人间第一赋《破窑赋》《命运赋》《时运赋》
  5. linux系统四个组成部分,Linux系统由哪几部分组成?系统详解(干货)
  6. BZOJ4372: 烁烁的游戏(动态点分治)
  7. 组建linux虚拟团队,虚拟团队建设与管理
  8. iOS-通俗易懂的微信支付接入和爬坑指南,十分钟轻松搞完
  9. hiho 1613 - 墨水滴 - bfs+优先队列 *
  10. 装机注意事项:一次装机差点翻车的经历