• python带你采集大型网游英雄皮肤图~


    前言

    嗨喽~大家好呀,这里是魔王呐 !

    开发环境以及模块的使用:

    • python 3.6

    • pycharm

    • requests >>> pip install requests

    • os 内置模块 不需要安装的

    整体流程:

    代码

    import requests # 第三方模块  pip install requests
    import pprint # 格式化输出的模块  在打印json的数据的时候,可以更加方便 查看数据信息
    import os # 内置模块 不需要安装 自带的
    import re # 内置模块 不需要安装
    
    • 1
    • 2
    • 3
    • 4

    def change_title(title):
        mode = re.compile(r'[\\\/\:\*\?\"\<\>\|]')
        new_title = re.sub(mode, '_', title)
        return new_title
    
    
    def save(title, name, img_url):
        # 我想要把每个英雄皮肤图片,单独保存在一个文件里面
        filename = f'img\\{title}\\'
        # 自动创建文件夹
        # 如果没有这个文件夹 / 没有这个路径 那么就创建这个文件夹
        if not os.path.exists(filename):
            os.mkdir(filename)
        # 获取图片内容,是要获取它一个二进制数据内容
        # 文本数据 response.text json数据 response.json()  二进制数据 response.content
        img_content = requests.get(url=img_url, headers=headers).content
        with open(filename + name + '.jpg', mode='wb') as f:
            f.write(img_content)
            print(name)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    response = requests.get(url=url, headers=headers)
    # pprint.pprint(response.json())
    # 解析数据 获取 英雄ID
    # json数据提取数据 和 字典类似  根据关键字提取值  通俗的讲 根据冒号左边的内容 提取冒号右边的内容
    hero_list = response.json()['hero'] #  返回的数据内容 是列表形式
    # 通过遍历/for 循环 提取它每一个英雄ID
    
    lis = []
    for index in hero_list:
    
        hero_id = index['heroId']
        lis.append(hero_id)
        # 字符串 格式化方法
        # 对英雄的皮肤数据 url地址 发送请求 获取英雄皮肤图片数据
    
    lis = lis[27:]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

        # pprint.pprint(response_1.json())
        # 解析数据 获取英雄皮肤url地址/英雄名字/皮肤名字
        skins = response_1.json()['skins']
        for index_1 in skins:
            # 皮肤图片地址
            img_url = index_1['mainImg']
            # 英雄名字
            title = index_1['heroTitle']
            # 皮肤名字
            name = index_1['name']
            new_name = change_title(name)
            new_title = change_title(title)
    
            if img_url:
                save(new_title, new_name, img_url)
            else:
                chroma_img = index_1['chromaImg']
                save(new_title, new_name, chroma_img)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    效果












    尾语

    要成功,先发疯,下定决心往前冲!

    学习是需要长期坚持的,一步一个脚印地走向未来!

    未来的你一定会感谢今天学习的你。

    —— 心灵鸡汤

    本文章到这里就结束啦~感兴趣的小伙伴可以复制代码去试试哦 😝

    👇问题解答 · 源码获取 · 技术交流 · 抱团学习请联系👇
  • 相关阅读:
    李宏毅2020机器学习课程笔记(二)- 深度学习
    Vue18 v-for指令 展示列表数据
    Springboot垃圾分类管理系统836b7计算机毕业设计-课程设计-期末作业-毕设程序代做
    【Linux】进程地址空间
    数据结构--B树
    SpringAOP入门案例
    【JavaEE】SpringBoot 拦截器详解 (统⼀功能处理)
    【多线程 - 10、线程同步3 ThreadLocal】
    service 详解
    惊讶,CRUD搬砖两三年了,不会阅读Spring源码?
  • 原文地址:https://blog.csdn.net/python56123/article/details/126872628