上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖

Python下载王者荣耀全皮肤

[复制链接]
  • TA的每日心情

    2023-8-2 14:49
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    6

    主题

    43

    回帖

    57

    积分

    初级工程师

    积分
    57
    发表于 2023-8-2 14:47:40 | 显示全部楼层 | 阅读模式
    # 导入发送请求模块(需命令行安装:pip install requests)
    import requests
    # 导入解析HTML代码工具(需命令行安装:pip install lxml)
    from lxml import etree
    # 导入文件处理
    import os
    # 导入睡眠时间, 预防请求过快导致停封
    from time import sleep
    
    # 伪装成浏览器
    headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36'}
    
    # 发送请求,获取英雄列表
    hero_list_url = 'https://pvp.qq.com/web201605/js/herolist.json'
    hero_list_req = requests.get(hero_list_url, headers=headers)
    
    # 循环遍历各个英雄
    for h in hero_list_req.json():
        # 英雄编号
        ename = h.get('ename')
        # 英雄名称
        cname = h.get('cname')
        # 如果英雄名称文件夹不存在,则创建
        if not os.path.exists(cname):
            os.makedirs(cname)
        # 发送请求,获取英雄详情(注:此处不使用hero_list_req.json()中的skin_name是因为这里的皮肤不全)
        hero_info_url = f'https://pvp.qq.com/web201605/herodetail/{ename}.shtml'
        hero_info_req = requests.get(hero_info_url, headers=headers)
        # 设置编码方式,否则显示乱码
        hero_info_req.encoding = 'GBK'
        # 解析HTML代码
        e = etree.HTML(hero_info_req.text)
        # 获取该英雄所有皮肤名称: ['惊鸿之笔&0', '修竹墨客&0', '梁祝&53', '天狼绘梦者&19', '神器·万象笔&103']
        names = e.xpath('//ul/@data-imgname')[0]
        # 处理英雄皮肤名称(如果名称中包含&则截取出名称,如果不包含&则直接取): ['惊鸿之笔', '修竹墨客', '梁祝', '天狼绘梦者', '神器·万象笔']
        names = [(name[0:name.index('&')] if '&' in name else name) for name in names.split('|')]
        print(f'开始下载[{cname}]皮肤')
        # 循环遍历下载(index: 索引,name:皮肤名称)
        for index, name in enumerate(names):
            # 发送请求,获取英雄皮肤
            hero_skin_url = f'https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{ename}/{ename}-bigskin-{index + 1}.jpg'
            res = requests.get(hero_skin_url, headers=headers)
            # 图片不存在则下载,{cname}/{name}.jpg可替换成自己想要的路径
            if not os.path.exists(f'{cname}/{name}.jpg'):
                # open:打开文件的意思,没有文件则会创建,{cname}/{name}.jpg:存放图片的路径 wb:w-写,b-byte
                # 解释代码:把图片的内容以byte方式写入到路径为{cname}/{name}.jpg的文件中
                with open(f'{cname}/{name}.jpg', 'wb') as f:
                    f.write(res.content)
                print(f'[{cname} => {name}]皮肤已下载完成')
                # 睡眠2秒,防止访问过快导致停封
                sleep(2)
    print("王者荣耀全部皮肤已下载完成")

    image.png

    已有1人评分好评 油猫币 贡献 理由
    hysaoh + 1 + 5 + 1 ggnb!

    查看全部评分 总评分:好评 +1  油猫币 +5  贡献 +1 

  • TA的每日心情
    开心
    2024-2-28 14:15
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    37

    主题

    233

    回帖

    363

    积分

    版主

    积分
    363

    油中2周年生态建设者

    发表于 2023-8-2 15:27:02 | 显示全部楼层
    注释写的不错!!!
    一叶叶,一声声,空阶滴到明。
    回复

    使用道具 举报

  • TA的每日心情

    2024-5-22 19:28
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    6

    主题

    26

    回帖

    112

    积分

    荣誉开发者

    积分
    112

    新人进步奖新人报道油中2周年荣誉开发者生态建设者

    发表于 2023-8-2 15:30:44 | 显示全部楼层
    ggnb!!!!!!
    回复

    使用道具 举报

  • TA的每日心情
    开心
    5 小时前
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4189

    回帖

    4056

    积分

    管理员

    积分
    4056

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2023-8-2 15:47:26 | 显示全部楼层
    有意思
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情
    郁闷
    3 小时前
  • 签到天数: 773 天

    [LV.10]以坛为家III

    76

    主题

    519

    回帖

    871

    积分

    专家

    脚本猫首席体验官

    积分
    871

    油中2周年生态建设者新人报道油中3周年挑战者 lv2喜迎中秋

    发表于 2023-8-3 14:21:19 | 显示全部楼层
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表