思路: """ 1.先进入官网看图片的标签数据 2.查看英雄细节界面 皮肤是背景图片 3.查看网页代码 4.找到了url参数,研究发现了一个可疑的请求 5.对json加密的数据进行解密,发现结果如下: 6.通过不同的英雄逐渐发现图片地址的规律以及单页同英雄皮肤图片数据的规律 7.在url中前者的数字对应英雄编号ename,后面的数字则是英雄皮肤的序号 这样可通过代码拼接url地址,从而下载所有的皮肤图片了 """
# get_heros.py # 引入模块 import requests import json import os import time #程序开始时间 st = time.time() url = \'http://pvp.qq.com/web201605/js/herolist.json\' # 获取 json 内容 response=requests.get(url).content # 提取 Json 信息 jsonData=json.loads(response) # 打印查看 print(jsonData) # 初始化下载数量 x = 0 hero_dir=\'imgs/\' #目录不存在则创建 if not os.path.exists(hero_dir): os.mkdir(hero_dir) for m in range(len(jsonData)): # 英雄编号 ename = jsonData[m][\'ename\'] # 英雄名称 cname = jsonData[m][\'cname\'] # 皮肤名称,一般英雄会有多个皮肤 skinName = jsonData[m][\'skin_name\'].split(\'|\') # 皮肤数量 skinNumber = len(skinName) # 循环遍历处理 for bigskin in range(1,skinNumber+1): # 拼接下载图片url picUrl = \'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/\'+str(ename)+\'/\'+str(ename)+\'-bigskin-\'+str(bigskin)+\'.jpg\' #获取图片内容 picture = requests.get(picUrl).content # 保存图片 with open( hero_dir + cname + "-" + skinName[bigskin-1]+\'.jpg\',\'wb\') as f: f.write(picture) x=x+1 print("当前下载第"+str(x)+"张皮肤") # 获取结束时间 end = time.time() # 计算执行时间 exec_time = end-st print("找到并下载"+str(x)+"张图片,总共用时"+str(exec_time)+"秒。")