python爬取王者荣耀高清图

原理请看:Python?30行代码?爬取王者荣耀所有英雄皮肤图片?_易果啥笔的博客-CSDN博客

我稍微改了一下:因为王者这个herolist.json文件里的信息更新的不太及时,导致爬取出来的皮肤有很多的缺漏;

具体修改的herolist.json文件里的"skin_name"进行了补充,大家也可以把每个英雄缺漏的皮肤名字加上,修改后的herolist.json文件就在自己的电脑上了,直接读取就可以了;

 代码是这样的:

import requests
import os
import json
 
def download_wzry_hero_picture():
    with open('herolist.json',encoding='utf-8') as fd:
        dict_hero_info = json.load(fd)#直接读取json的文本并转为为list
    header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
    for key in dict_hero_info:  # 遍历字典
        name = key['cname']  # 英雄名字
        id = key['ename']  # 英雄编号
        # 如果没有skin_name,则输出:"无图片"
        skin_name_default = key.setdefault('skin_name', '无图片')#setdefault()函数取skin_name字段,没有skin_name字段,添加skin_name字段并赋值为‘无图片’
        print(skin_name_default)
        count = skin_name_default.count('|')  # 利用 count() 查询字符出现的次数
        skin_name_list = skin_name_default.split('|')  # 利用 split() 分割字符返回列表
        if not os.path.exists(name):  # 创建图片保存的文件夹
            os.mkdir(name)# mkdir()创建文件夹
        for i in range(1, count + 2):
            # 构造英雄皮肤地址
            url2 = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/%s/%s-bigskin-%d.jpg' % (id, id, i)#文本利用循环用 "%x"%(x)
            img = requests.get(url=url2,headers=header)  # 获取图片的二进制数据
            print(url2)
            pictName = skin_name_list[i-1]
            # 下载并保存图片
            with open(name + '/' + pictName + '.jpg', 'wb') as f:
                f.write(img.content)  # 写入图片
                print('成功下载并保存图片~')
 
 
# 程序入口
if __name__ == '__main__':
    download_wzry_hero_picture()

猜你喜欢

转载自blog.csdn.net/qq_52070860/article/details/120749074