整体思路

步骤一、先进入该网站查看下图片数据所在

爬取王者荣耀皮肤图片数据_json

 

 步骤二、发现界面皮肤图片是直接将皮肤图片作为背景,需点击右下角选择皮肤图片

爬取王者荣耀皮肤图片数据_获取图片_02

 

 步骤三、可以先打开网页检查,观察下背景图片的网页代码

爬取王者荣耀皮肤图片数据_url参数_03

 

 步骤四、找到了url参数,单单这一点是不够的所以回到前面的网址,研究发现了一个可疑的请求

爬取王者荣耀皮肤图片数据_获取图片_04

 

 步骤五、对json加密的数据进行解密,发现结果如下:

爬取王者荣耀皮肤图片数据_获取图片_05

 

 步骤六、通过不同的英雄逐渐发现图片地址的规律以及单页同英雄皮肤图片数据的规律

爬取王者荣耀皮肤图片数据_url参数_06

 

 爬取王者荣耀皮肤图片数据_初始化_07

 

 爬取王者荣耀皮肤图片数据_json_08

 

 步骤七、在url中前者的数字对应英雄编号ename,后面的数字则是英雄皮肤的序号

这样可通过代码拼接url地址,从而下载所有的皮肤图片了

完整代码

爬取王者荣耀皮肤图片数据_数据_09爬取王者荣耀皮肤图片数据_数据_10
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(r'王者皮肤'):
     os.mkdir(r'王者皮肤')

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)+"秒。")
View Code