下载王者荣耀 网站英雄 皮肤
[]简书[
阿旭123]
https://www.jianshu.com/p/2a9f23210ce7
#--*coding:utf-8*--
# 下载 json文件,获取文件内容,并解析
# 英雄编号及皮肤信息
import os.path
import random
import time
import requests #最简单易用的HTTP库,建议爬虫使用requests
hero_list_url="https://pvp.qq.com/web201605/js/herolist.json"
# 发送get请求 获取数据
hero_list=requests.get(hero_list_url)
# 将获取json数据
hero_list_json=hero_list.json()
# 储存目录,本地
储存目录="d:\王者_英雄图片"
if not os.path.exists(储存目录):os.mkdir(储存目录)
图片计数=0
# 挖掘 json里面的数据
for 英雄信息 in hero_list_json: # 英雄信息 {'ename': 508, 'cname': '伽罗'...}
英雄名字=英雄信息["cname"]
英雄编号=英雄信息["ename"]
# 获取该英雄的皮肤名称列表 如何能找到skin_name 那么皮肤列表就是 否则 为[]
皮肤列表=英雄信息.get("skin_name").split("|")if 英雄信息.get("skin_name") else []
for i in range(len(皮肤列表 )):
图片号=i+1 #图片编号 从1开始
# 有些图片 在json中没有皮肤名字, 就定义为 未知
if i<len(皮肤列表):
皮肤名字 = 皮肤列表[i]
else: 皮肤名字 = f"未知{i}"
图片地址=f"https://game.gtimg.cn/images/yxzj/img201606/heroimg/{英雄编号}/{英雄编号}-smallskin-{图片号}.jpg"
服务器响应状态=requests.get(图片地址) #服务器响应状态 200正常 404页面未找到
# 图片储存路径
图片路径名字=os.path.join(储存目录,f"{英雄名字}-{皮肤名字}.jpg")
if 服务器响应状态.status_code==200: #200 服务器响应正常
with open(图片路径名字,"wb") as f:
f.write(服务器响应状态.content) # 把服务器状态 以二进制的形式写入 图片路径
图片计数+=1
print(f"第{图片计数}张下载成功:{英雄名字}{皮肤名字}")
下载间隔=random.random()
time.sleep(下载间隔) #随机间隔0-1秒的时间,防止被检测出来是爬虫
# print(皮肤列表)