• Python爬虫获取王者荣耀英雄全皮肤图片,并下载到本地


    下载结果

    在这里插入图片描述

    在这里插入图片描述

    完整代码

    import requests
    import json
    import os
    import time
    
    
    def get_hero_info():
        # 英雄的全部信息的url
        hero_info = 'https://pvp.qq.com/web201605/js/herolist.json'
        # 获取英雄的全部信息
        response = requests.get(hero_info)
        # 转为字典格式
        hero_info_dict = json.loads(response.text)
        return hero_info_dict
    
    
    def downloads_img():
        hero_info_dict = get_hero_info()
        for hero in hero_info_dict:
            # 获取单个英雄的名字
            hero_name = hero['cname']
            # 获取英雄的ID
            hero_num = hero['ename']
            # 图片保存的根路径
            hero_image_path = 'G:\\imgs\\' + hero_name
            # 创建文件夹
            os.mkdir(hero_image_path)
            print(hero_name + '皮肤正在下载....:')
            # 判断英雄是否有皮肤
            if 'skin_name' in hero:
                hero_skins = hero['skin_name']
                # 判断英雄皮肤个数是否大于1
                if '|' in hero_skins:
                    # 将英雄的皮肤姓名以 | 分隔开
                    hero_skin_list = hero_skins.split('|')
                    # 英雄的皮肤个数
                    hero_skin_count = len(hero_skin_list)
                    for hero_skin_num in range(hero_skin_count):
                        # 英雄的皮肤名字
                        hero_skin_name = hero_skin_list[hero_skin_num]
                        # 英雄皮肤图片的url地址
                        hero_skin_url = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' + str(
                            hero_num) + '/' + str(hero_num) + '-bigskin-' + str(hero_skin_num + 1) + '.jpg'
                        # 将图片转为字节形式
                        image_content = requests.get(hero_skin_url).content  # 请求url
                        # 保存图片
                        with open(hero_image_path + '\\' + hero_name + '-' + hero_skin_name + '.jpg', 'wb') as image:
                            image.write(image_content)
                        print("  【%s】皮肤下载完毕" % hero_skin_name)
            time.sleep(1)
    
    
    if __name__ == '__main__':
        start = time.time()
        downloads_img()
        end = time.time()
        print('共耗时' + str(end - start) + '秒')
    
    

    代码解释

    • https://pvp.qq.com/web201605/js/herolist.json是官方的英雄信息数据,格式如下
    • 在这里插入图片描述
    • 从中先获取英雄都是有哪些皮肤,并且获取皮肤的名称
    • 根据英雄的ename获取英雄的唯一标识符,进一步获取皮肤的图片地址
    hero_skin_url = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' + str(
                           hero_num) + '/' + str(hero_num) + '-bigskin-' + str(hero_skin_num + 1) + '.jpg'
    

    运行效果

    在这里插入图片描述

  • 相关阅读:
    第03章 用户和权限管理【1.MySQL架构篇】【MySQL高级】
    layui 树状控件tree优化
    前端Vue预览下载pdf文件后台管理
    vueday02——使用NTableData
    芒果改进目录一览|改进YOLOv5、YOLOv7等YOLO模型全系列目录
    Oracle 安装包合集!
    API接口中大数据在淘宝中的应用【获取商品详情接口,商品价格,SKU数据,订单……】
    Bond网卡
    编写一个程序,若处理器是大端序的则返回0,若 处理器是小端序的则返回1。
    C++ 类的大小 原理+详细计算示例
  • 原文地址:https://blog.csdn.net/WwLK123/article/details/140312379