欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

程序员文章站 2024-02-02 23:25:22
upm9冲锋枪我的最爱 朋友爱上一款手游:全军出击,常常和我开黑,午休都没睡觉,陪朋友在沙漠里奔波, 然而技术一直没什么上升。 所以我准备用Python来爬取每场的比赛的数据,来分析出牛逼与菜逼之间到底是存在着什么问题。用数据来说话,任何逻辑都是无用的,任何场合数据才是最有说服力的东西。 看到我的吃 ......

upm9冲锋枪我的最爱

如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

 

朋友爱上一款手游:全军出击,常常和我开黑,午休都没睡觉,陪朋友在沙漠里奔波, 然而技术一直没什么上升。

所以我准备用Python来爬取每场的比赛的数据,来分析出牛逼与菜逼之间到底是存在着什么问题。用数据来说话,任何逻辑都是无用的,任何场合数据才是最有说服力的东西。

如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

 

看到我的吃鸡战绩,其实还是比较满意的,吃鸡率有百分之五十。然而就是 这样我遇到了瓶颈,我想变得更加强大。

说干就干,开始利用Python爬取我想要的数据吧。

1 分析数据接口如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

先了解页面是如何获取战斗数据的,然后把这些战绩数据采集下来。

使用Charles抓包

抓包实现

如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

 

流程如下:

如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

 

https加密流量的处理

微信所有的流量都是HTTPS请求(数据加密),所获得的加密了的数据对我们没有任何参考意义。 可以由在手机和电脑都安装Charles根证书的方式来实现对Https流量的分析

如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

 

证书安装后,流量是这样的

如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

 

配置好上述条件后,可以读取到https的请求和响应数据

如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

 

  • windows下用findler抓包工具也可以实现这个功能
  • 这是一个非常典型的中间人场景

数据接口

如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

 

1. 获取用户信息接口

如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

 

  • response (返回)
如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

 

  • 分析

openid是用户的惟一标识。

2. 获取用户战绩列表接口

如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

 

  • response (返回、响应)
如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

 

分析数据:

如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

 

2 爬取数据

接口确定后,可以去抓取数据了。

利用requests请求接口获取数据

如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

 

用这种方法,快速把另外的两个接口写好。

利用redis标记已经爬取过的信息

如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

 

核心代码:

如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

 

利用celery管理队列

如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

 

创建三个task、queue

如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

 

在task中控制API请求和Redis数据实现完整的任务逻辑:

如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

 

Python爬取

由于是分布式爬虫,所以需要给代码一个用户的入口,需要手动创建一个用户的采集任务

如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

 

入口存在后,用celery启动worker去开始爬取

如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

 

Python爬虫就开始爬取了,可以由celery-flower来查看执行情况。

如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

 

效率:

如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

 

get_battle_list跑太快,导致get_battle_info技术开了30个并发还是会有很多积压,我们可以适当的停止一些worker。 仅仅抓了二十万数据就停止了,不过也应该够了。

3 数据分析

分析方案

爬取到的数据全部分成json文件存在本地磁盘上,做一些简单的分析。 python在数据分析领域有很多非常优秀的库,pandas和NumPy,可以由此进行深度分析,我这里来做一些浅度分析。

如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

 

Python数据分析结果

1. 平均用户日在线时长为2小时

如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

 

大部分人也有一个小时以上,有些人却也有超过八个小时的。

2. 被扶起的角色,女远大于男(符合常情)

如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

 

3. 救人次数也是女性大于男性(一般女孩都是天使)

如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

 

以后可以堂堂正正的带妹,为什么?这数据就是理由阿。

4. 玩家最少的是周五

如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

 

5. 晚上10点大家都下班了,这是绝地求生游戏人数的最顶峰时期

如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

 

6. 最远的击杀距离为639米(挂壁除外)

如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

 

7. 救死扶伤称号是最高荣耀,是最难拿到的

如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

 

比十连杀的难度还要高许多

如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!

 

与前面的数据不冲突,拿的最多的女性还是要大于男性。绝地求生,活着才是希望,带人上分,我选带妹!

如何吃鸡到国服前十的?Python分析几十万场比赛数据,揭开谜底!