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

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

本文介绍如何使用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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。