【爬虫实例】下载英雄联盟所有英雄的皮肤

爬虫-下载英雄联盟所有英雄的皮肤

import requests
import os

def download_pifu(ip):
    response = requests.get(ip)

    result = response.json()
    # print(result)

    for x in result['hero']:
        name = x['name']
        hero_id = x['heroId']
        directory = 'files/pifu/' + name
        if not os.path.exists(directory):
            os.makedirs(directory)
        ip1 = 'https://game.gtimg.cn/images/lol/act/img/js/hero/' + hero_id + '.js'
        # print(ip)
        response1 = requests.get(ip1)
        result1 = response1.json()
        for y in result1['skins']:
            name1 = y['name'].replace('/', ' ')
            # name = y['heroName']
            result2 = y['mainImg']

            try:
                response2 = requests.get(url=result2)
                result3 = response2.content
                print(type(result3))
                with open('files/pifu/' + name + '/' + name1 + '.jpg', 'wb') as f:
                    f.write(result3)
                print(f'------{name1}下载完成-------')
            except:
                continue

print(download_pifu('https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js'))

  1. 根据英雄联盟所有角色页面的json,获取数据结果,可以得到每个英雄的id,

  2. 由于每个角色皮肤的json的地址只有结尾不一样(并且是以英雄id.js为结尾),那么每个英雄皮肤的json都需要字符串拼接

  3. 向每个角色皮肤的json发送请求得到结果,可以得到每个皮肤的名字和皮肤地址,由于部分皮肤名字存在’/',可以替换一下

  4. 由于此时得到的还是皮肤的字符串地址,要下载该皮肤还需要根据该地址,发送请求,得到数据进行下载

  5. 由于角色众多,每个角色又有多个皮肤,可以在files/pifu下以角色名为目录,分类存放皮肤(files/pifu目录需要提前创建好)

  6. 由于不是每个皮肤都会有皮肤地址,有些皮肤没有’mainImg’,所以需要有一个异常捕获,跳过改皮肤,也可以下载’chromImg’

在这里插入图片描述

(只截取的部分)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值