Python实现王者荣耀全皮肤批量下载:16行代码详解

沈知远
沈知远
发布时间:2026-10-13 | 4人浏览过
原创

本文介绍如何使用Python通过16行代码批量下载王者荣耀高清皮肤。教程涵盖获取英雄列表JSON、解析皮肤URL规则、利用urllib.urlretrieve下载及文件管理逻辑,帮助开发者快速掌握基础爬虫技巧。

Python批量下载王者荣耀皮肤教程

如今许多手游玩家对《王者荣耀》情有独钟,其中精美的皮肤设计更是让人爱不释手。你是否曾想过将这些高清皮肤保存下来,用作电脑或手机壁纸,效果如同下图所示?

本文将指导大家使用Python编写仅16行核心代码,实现《王者荣耀》所有高清皮肤的批量下载。

具体操作流程主要包含两个关键步骤:

第一步是定位皮肤图片的URL地址;

第二步则是执行图片下载操作。

获取英雄列表数据

1. 定位皮肤图片地址 1. 获取英雄列表数据

首先访问百度搜索“王者荣耀”进入官方网站 https://pvp.qq.com/。以Google Chrome浏览器为例,通过“更多工具”菜单打开开发者工具,或直接按下F12键进入调试模式,随后按F5刷新页面。

图中高亮显示的herolist.json文件即为我们需要的英雄列表数据源,其中包含了英雄编号、名称、类型以及皮肤名称等详细信息。右键点击该文件复制链接,地址为:http://pvp.qq.com/web201605/js/herolist.json

接下来通过代码验证我们获取的地址是否正确,参考代码1:


import urllib.request
import json
import os

response = urllib.request.urlopen("http://pvp.qq.com/web201605/js/herolist.json")

hero_json = json.loads(response.read())
hero_num = len(hero_json)

print(hero_json)
print("hero_num : " , str(hero_num))

上述代码负责读取英雄列表数据并存储至变量hero_json中,同时统计英雄总数。运行效果如下图所示:

解析英雄皮肤URL地址

2. 解析英雄皮肤URL地址

点击首页的“游戏资料”标签页,进入新页面后随意点击一个英雄头像进入详情页面,此处以李白为例。同样使用F12打开调试工具并按F5刷新,将鼠标悬停在李白的不同皮肤上依次划过,

观察调试窗口中的网络请求记录。

可以看到李白的皮肤图片共有5个。我们在任意一个皮肤图片上右键复制链接,得到如下地址:

https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/131/131-bigskin-5.jpg

这便是我们需要获取的英雄皮肤图片链接。

分析该链接结构可以发现,其中‘131’代表英雄编号,而末尾的‘-5’则表示该英雄的第几个皮肤。至此,浏览器端所需的关键信息已全部获取完毕。

执行图片下载逻辑

2. 执行图片下载 1. 确定英雄皮肤数量

在第一步获取的herolist.json文件中存在'skin_name'字段,解析该字段即可获取皮肤的数量与具体名称。测试代码接续代码1,见代码2:


hero_name = hero_json[0]['cname']
skin_names = hero_json[0]['skin_name'].split('|')
skin_num = len(skin_names)

print('hero_name: ', hero_name)
print('skin_names :', skin_names)
print('skin_num: ' + str(skin_num))

测试后的运行结果如下所示:

结果显示廉颇共有两个皮肤,名称分别为:正义爆轰和地狱岩魂。

2. 执行文件下载

下载文件功能依赖于urlretrieve接口,同时需考虑以下两个逻辑问题:

1. 检查目标文件夹是否存在,若不存在则自动创建;


save_dir = 'D:\heroskin\\'
if not os.path.exists(save_dir):
os.mkdir(save_dir)

2. 检查本地图片文件是否已存在,若存在则跳过下载以避免重复。


if not os.path.exists(save_file_name):
urllib.request.urlretrieve(skin_url, save_file_name)

代码3如下所示:


save_dir = 'D:\heroskin\\'
if not os.path.exists(save_dir):
 os.mkdir(save_dir)
 for i in range(hero_num):
  # 获取英雄皮肤列表
  skin_names = hero_json[i]['skin_name'].split('|')
  for cnt in range(len(skin_names)):
   save_file_name = save_dir + str(hero_json[i]['ename']) + '-' +hero_json[i]['cname']+ '-' +skin_names[cnt] + '.jpg'
   skin_url = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/'+str(hero_json[i]['ename'])+ '/' +str(hero_json[i]['ename'])+'-bigskin-' + str(cnt+1) +'.jpg'
   print(skin_url)
   if not os.path.exists(save_file_name):
    urllib.request.urlretrieve(skin_url, save_file_name)

总结

以下是完整的代码实现,去除注释和空行后共计16行代码,成功实现了下载《王者荣耀》全部高清皮肤的功能:


import urllib.request
import json
import os
 
response = urllib.request.urlopen("http://pvp.qq.com/web201605/js/herolist.json")
hero_json = json.loads(response.read())
hero_num = len(hero_json)
save_dir = 'D:\heroskin\\'
if not os.path.exists(save_dir):
 os.mkdir(save_dir)
 for i in range(hero_num):
  # 获取英雄皮肤列表
  skin_names = hero_json[i]['skin_name'].split('|')
  for cnt in range(len(skin_names)):
   save_file_name = save_dir + str(hero_json[i]['ename']) + '-' +hero_json[i]['cname']+ '-' +skin_names[cnt] + '.jpg'
   skin_url = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/'+str(hero_json[i]['ename'])+ '/' +str(hero_json[i]['ename'])+'-bigskin-' + str(cnt+1) +'.jpg'
   print(skin_url)
   if not os.path.exists(save_file_name):
    urllib.request.urlretrieve(skin_url, save_file_name)

运行后的效果如图所示:

由此可见,掌握一门编程语言的重要性不言而喻。

上述知识点较为基础,如果大家有任何补充建议,欢迎联系本站编辑。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表