最近老板爱上了吃鸡,经常拉着我们开黑,只能放弃午休的时间,陪老板在沙漠里奔波。 上周在在微信游戏频道看战绩的时候突发奇想,是不是可以通过这个方式抓取到很多战斗数据,然后分析看看有什么规律。
第一步、分析数据接口
使用Charles抓包
https加密流量的处理
经过研究,可以通过在手机和电脑都安装Charles根证书的方式来实现对Https流量的分析
数据接口
接下来就根据这些数据来找出我们需要的接口了,经过分析,主要涉及三个接口
获取用户信息接口
获取用户战绩列表接口
获取用户指定战绩详细信息接口
下面我们一个一个看
1. 获取用户信息接口
request
response
同理获取用户战绩列表接口和获取用户战绩详情接口
第二步、爬取数据
使用requests请求接口获取数据
使用redis来标记已经爬取过的信息
使用celery来管理队列
然后在task中控制API请求和Redis数据实现完整的任务逻辑,如:
开始抓取
有入口之后我们就用celery来启动worker去开始爬虫
通过flower,我们可以看到运行的效率还是非常不错的。
第三步、数据分析
分析结果
1. 平均用户日在线时长2小时
从分布图上看大部分用户都在1小时以上,最猛的几个人超过8小时。
注:我这里统计的是每一局的存活时间,实际在线时长会比我这个更长。
2. 女性角色被救次数高于男性
终于知道为什么有那么多人妖了,原来在游戏里面可以占便宜啊。
3. 女性角色救人次数高于男性
给了大家一个带妹上分的好理由。
4. 周五大家最忙
估计周五大家都要忙着交差和写周报了。
5. 晚上22点是游戏高峰
凌晨还有那么多人玩,你们不睡觉吗?
6. 最远击杀距离639米
我看了一下98K、SKS 和 AWP 的有效射程,大致都在 800 米以内,所以这个值可信度还是可以的。 反过来看抖音上的那些超远距离击杀应该都是摆拍的。
7. 能拿到「救死扶伤」称号才是最高荣耀
从分布情况可以看出来,救死扶伤比十杀还要难。
能拿到救死扶伤称号的大部分都是女性角色,再一次证明玩游戏要带妹。 回归到这个游戏的本质,那就是生存游戏,没什么比活下来更重要的了。
如果你依然在编程的世界里迷茫,可以加入我们的Python学习扣qun:784758214,看看前辈们是如何学习的。交流经验。从基础的python脚本到web开发、爬虫、django、数据挖掘等,零基础到项目实战的资料都有整理。送给每一位python的小伙伴!分享一些学习的方法和需要注意的小细节,点击加入我们的 python学习者聚集地
结尾
这次爬虫主要是利用了微信游戏频道可以查看陌生人数据的场景才能提取到这么多数据。我们可以通过同样的手段来分析王者荣耀和其它游戏的数据,有兴趣的同学可以尝试一下。