爬虫之LOL爬取全英雄皮肤

import requests  # 网络请求库,用于请求网页并获取数据
import jsonpath  # 筛选json数据
import os  # 系统模块


def lol():
	# js文件
    url = 'https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js'
    User_Agent = ''  # 此处需要通过开发者工具的Network以下的Headers复制User-Agent使用
    
    # 构建请求头
    headers = {
        'User_Agent': User_Agent
    }

    # 请求数据
    response = requests.get(url, headers=headers).json()
    # print(response)

    # 筛选数据
    hero_ids = jsonpath.jsonpath(response, '$..heroId')  # 英雄id
    # print(hero_ids)
    hero_names = jsonpath.jsonpath(response, '$..name')  # 英雄名字
    # print(hero_names)
    for hero_id, hero_name in zip(hero_ids, hero_names):
        # 链接
        hero_info_url = 'https://game.gtimg.cn/images/lol/act/img/js/hero/{}.js'.format(hero_id)
        # print(hero_info_url)
        hero_info = requests.get(hero_info_url).json()
        # print(hero_info)
        skin_info_list = hero_info['skins']  # 皮肤数据
        # print(skin_info_list)
        skin_id_list = jsonpath.jsonpath(skin_info_list, '$..skinId')  # 获取皮肤id
        # print(skin_id_list)
        skin_name_list = jsonpath.jsonpath(skin_info_list, '$..name')  # 获取皮肤名字
        # print(skin_name_list)

        # 新建角色名称文件夹,将爬取的图片分类保存在英雄的文件夹内
        if not os.path.exists(hero_name):
            os.mkdir(hero_name)
        for skin_id, skin_name in zip(skin_id_list, skin_name_list):
            url1 = 'https://game.gtimg.cn/images/lol/act/img/skin/big' + skin_id + '.jpg'

            # 请求拼接后的图片数据
            image = requests.get(url1)
            # 返回404则不会保存
            if image.status_code == 200:
                with open('./' + hero_name + '/' + skin_name + '.jpg', 'wb') as file:
                    file.write(image.content)
                print('<%s>下载成功' % skin_name)


lol()

开始运行代码后Console会有以下内容
在这里插入图片描述
在py文件同级目录下会将爬取内容进行保存
在这里插入图片描述
点开每个英雄文件夹下就可以看见保存的图片
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值