使用Python脚本下载王者**游戏英雄皮肤原画图片(含源码)
- 游戏开发
- 2025-08-30 16:33:02

前言
出于美术借鉴学习的目的,需要该游戏的英雄皮肤原画图片,所以进行了分析和本地下载,代码导入了必要的库:os、re、urljoin、requests和lxml.etree。 代码和下载资源仅供学习使用,版权&著作权归原作者所有!运行时请遵守网站相关规定,控制请求频率。出现侵权以及经济纠纷后果自负。
下载的图片基本是 1920*882的尺寸,大小在几百KB – 1MB范围内:
实现过程其核心思路:是访问英雄列表接口获取所有英雄数据,遍历每个英雄:创建对应的存储目录,解析英雄详情页获取皮肤信息,批量下载所有皮肤图片。
创建目录 base_dir = os.path.join('WangZhe_Imgs') os.makedirs(base_dir, exist_ok=True) # 自动创建基础目录 hero_dir = os.path.join(base_dir, cname) os.makedirs(hero_dir, exist_ok=True) # 创建英雄专属目录示例:英雄"孙悟空"的皮肤会保存在WangZhe_Imgs/孙悟空/目录下
详情页 resp = requests.get(hurl) # 请求英雄详情页 resp.encoding = resp.apparent_encoding # 自动检测编码 curr = etree.HTML(resp.text) # 构建HTML解析器 获取图URL src = curr.xpath("//div[@class='zk-con1 zk-con']/@style") url_part = style.split('url(')[1].split(')')[0].strip('\'"') base_img_url = urljoin(hurl, url_part) # 拼接完整URL最终得到基础URL示例: ***/…/109-bigskin-1.jpg
处理URL base_part, ext_part = base_img_url.split('-1.', 1) ext = f".{ext_part.split('?')[0]}" # 提取扩展名并去除参数 获取图片名 pic_pf = curr.xpath("//div[@class='pic-pf']/ul/@data-imgname") skin_names = pic_pf[0].split('|') 下载所有 for idx, skin_name in enumerate(skin_names, 1): skin_url = f"{base_part}-{idx}{ext}" # 生成实际图片URL safe_name = re.sub(r'[\\/*?:"<>|]', '_', skin_name) # 清理非法字符 resp_img = requests.get(skin_url) 代码完整代码如下:
import os import re from urllib.parse import urljoin import requests from lxml import etree def download_images(hurl, cname): # 创建基础目录和英雄目录 base_dir = os.path.join('WangZhe_Imgs') os.makedirs(base_dir, exist_ok=True) hero_dir = os.path.join(base_dir, cname) os.makedirs(hero_dir, exist_ok=True) resp = requests.get(hurl) if resp.status_code != 200: print(f"请求失败,状态码:{resp.status_code},英雄:{cname}") return resp.encoding = resp.apparent_encoding curr = etree.HTML(resp.text) # 提取背景图片URL src = curr.xpath("//div[@class='zk-con1 zk-con']/@style") if not src: print(f"未找到皮肤图片,英雄:{cname}") return style = src[0] if 'url(' not in style: print(f"样式格式错误,英雄:{cname}") return url_part = style.split('url(')[1].split(')')[0].strip('\'"') base_img_url = urljoin(hurl, url_part) # 处理图片URL格式 if '-1.' not in base_img_url: print(f"图片URL格式不符:{base_img_url},英雄:{cname}") return base_part, ext_part = base_img_url.split('-1.', 1) ext = f".{ext_part.split('?')[0]}" # 去除查询参数 # 提取皮肤名称 pic_pf = curr.xpath("//div[@class='pic-pf']/ul/@data-imgname") if not pic_pf: print(f"未找到皮肤名称,英雄:{cname}") return skin_names = pic_pf[0].split('|') # 下载皮肤图片 for idx, skin_name in enumerate(skin_names, 1): skin_url = f"{base_part}-{idx}{ext}" # 清理非法字符 safe_name = re.sub(r'[\\/*?:"<>|]', '_', skin_name) save_path = os.path.join(hero_dir, f"{safe_name}.jpg") # 下载并保存 resp_img = requests.get(skin_url) if resp_img.status_code == 200: with open(save_path, 'wb') as f: f.write(resp_img.content) print(f"下载成功:{cname} - {safe_name}") else: print(f"下载失败:{skin_url}") def main(url): resp = requests.get(url) if resp.status_code != 200: print("获取英雄列表失败") return for hero in resp.json(): hero_url = f" pvp.秋秋 /web201605/herodetail/{hero['ename']}.shtml" download_images(hero_url, hero['cname']) if __name__ == '__main__': url = ' pvp.秋秋 /web201605/js/herolist.json' main(url)运行 :
再次强调 以上代码和下载资源仅供学习使用,版权&著作权归原作者所有!运行时请遵守网站相关规定,控制请求频率。出现侵权以及经济纠纷后果自负。
使用Python脚本下载王者**游戏英雄皮肤原画图片(含源码)由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“使用Python脚本下载王者**游戏英雄皮肤原画图片(含源码)”