爬取王者荣耀英雄皮肤图片:因为我们可以很简单就从官网获取英雄列表的json数据,所以这里的主要工作是解析json,然后拼接对应的英雄的皮肤的URL,最后进行下载。
简介
这里只是简单介绍主要内容,详见github,仓库地址:hero-skin-images,下面是仓库页面截图,点击图片可直接跳转到仓库。
思路分析
这个项目还是比较简单的,因为很多数据都已经json数据中,我们可以很方便的从中取出我们想要的数据。至于下载皮肤图片的主要难点是拼接图片URL,这里有个小坑就是:每张图片都有5种(或者说至少是5种)尺寸的图片,我之前就只发现了其中一种,当然你可以有选择的进行下载;尺寸详见:皮肤图片尺寸分析。
涉及到的知识点
- 使用requests库进行网络连接,获取网址数据。
- 使用json库解析json文件(数据)。
- 使用os库创建文件夹。
- 字符串拼接。
Json数据说明
我已经将可能有用的json文件都下载了,并且进行了格式化(转换编码为utf8),放在了./wzry/json数据/
文件夹下。或者你可以到下面提到的链接中取下载对应的文件(访问json文件URL会自动下载)。
英雄列表介绍主页:https://pvp.qq.com/web201605/herolist.shtml,有herolist.json
。
某个英雄具体介绍主页,如:https://pvp.qq.com/web201605/herodetail/518.shtml,有其他三个文件。
herolist.json
:英雄列表
- 说明:包含英雄id,英雄名,英雄默认皮肤(伴生皮肤:即不用花钱的),英雄类型,英雄皮肤(特指需要花钱买的皮肤,也有可能会在一些活动中会送。注意:
skin_name
这个属性不一定有,比如新英雄可能就没有)。 - 数据URL : https://pvp.qq.com/web201605/js/herolist.json
- 举例(部分内容):
1 | [ |
- 存在问题并已经进行处理,详见:存在问题及解决方案。
item.json
:英雄装备列表
- 说明:包含装备id,装备名,装备类型,装备图片id,装备描述。
- 数据URL : https://pvp.qq.com/web201605/js/item.json
- 举例(部分内容):
1 | [ |
ming.json
:英雄铭文列表
- 说明:包含铭文id,铭文类型,铭文等级,铭文名,铭文描述(属性/加成)。
- 数据URL : https://pvp.qq.com/web201605/js/ming.json
- 举例(部分内容):
1 | [ |
summoner.json
:召唤师技能列表
- 说明:(summoner:召唤师(游戏职业名))包含技能id,技能名,召唤师等级(账号达到多少级才能解锁该技能),技能描述。
- 数据URL : https://pvp.qq.com/web201605/js/summoner.json
- 举例(部分内容):
1 | [ |
皮肤图片尺寸分析
英雄皮肤图片信息只涉及到 herolist.json
数据,目前发现图片有5种尺寸,注意:下面的图片大小只是对应英雄的图片尺寸,猜测不是固定的,而是在一定范围内变化。
下面以英雄马超为例,英雄首页:https://pvp.qq.com/web201605/herodetail/518.shtml
形式一URL–猜测用于手机端显示 | 猜测用途 | 图片尺寸 |
---|---|---|
https://game.gtimg.cn/images/yxzj/img201606/heroimg/518/518-smallskin-1.jpg | 英雄头像 | 67-67 |
https://game.gtimg.cn/images/yxzj/img201606/heroimg/518/518-mobileskin-1.jpg | 小屏手机英雄背景 | 600-410 |
https://game.gtimg.cn/images/yxzj/img201606/heroimg/518/518-bigskin-1.jpg | 大屏手机英雄背景 | 1200-530 |
形式二URL–猜测是壁纸 | 猜测用途 | 图片尺寸 |
---|---|---|
https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/518/518-mobileskin-1.jpg | 手机壁纸 | 727-1071 |
https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/518/518-bigskin-1.jpg | 电脑壁纸 | 1920-882 |
程序说明
- 测试环境:Python3.7.1,JetBrains PyCharm Community Edition 2018.2.4 x64。
- 依赖:
requests
,json
,如果没有安装requests
,用pip install requests
进行安装即可(json
为内置库)。 - 使用说明:主程序为:
./wzry/wzry.py
,运行该程序会将图片下载在当前目录的五个文件夹内,如./wzry/phone-bigskin-images/
;如需下载全部英雄图片,请将程序中的break语句
注释掉。
代码
1 | # -*-coding:utf-8 -*- |
结果(数据)分析
注:因为该程序是解析json文件获得对应英雄的信息,但是仔细观察后,发现该数据稍有滞后,有部分数据还未进行更新;故该数据非最新数据,仅供参考。(如需要获得最新数据就需要爬取网页元素进行分析,有兴趣者可自行扩展)
1.该文件夹包含了王者荣耀所有英雄的皮肤图片,有5种尺寸。
2.数据汇总(截止:2019年9月14日19:39:23)
英雄数量:95个
皮肤数量:338个(含伴生皮肤)3.图片尺寸说明(图片尺寸和大小应该是在一定范围内变化,不是定值,以下数据仅供参考):
文件夹 每张图片尺寸(像素) 图片大小(KB) 说明(猜测) phone-smallskin-images/ 67*67 20 英雄头像 phone-mobileskin-images/ 600*410 200 小屏手机英雄背景 phone-bigskin-images/ 1200*530 450 大屏手机英雄背景 wallpaper-mobileskin-images/ 727*1071 530 手机壁纸 wallpaper-bigskin-images/ 1920*882 900 电脑壁纸 4.文件夹大小
文件夹 文件夹大小(MB) phone-smallskin-images/ 2 phone-mobileskin-images/ 34.6 phone-bigskin-images/ 68 wallpaper-mobileskin-images/ 61 wallpaper-bigskin-images/ 105
我已将图片全部都下载了,并上传到百度云,有需要可自取。
百度云链接:
链接:https://pan.baidu.com/s/1uFGfSPuKBzYJjEjn6YCx-A
提取码:fd3t
或者扫描下面的二维码
License
This work is licensed under a MIT.
声明
本项目仅用于学习交流使用,禁止进行商业目的的开发、发布、运营等。数据所有权归 腾讯公司 所有。
发布时间: 2019-09-16
最后更新: 2019-09-16
本文标题: Python爬虫基础--爬取王者荣耀英雄皮肤图片
本文链接: https://www.yansheng.xyz/article/2a5bc7b5.html
版权声明: 本作品采用 CC BY-NC-SA 4.0 许可协议进行许可。转载请注明出处!
