【Python应用】爬取LOL皮肤图片(面向过程编程)

一曲冷凌霜 提交于 2020-03-10 05:33:09

LOL官网英雄资料:https://lol.qq.com/data/info-heros.shtml

  • 分析网站

找到英雄列表的json文件(hero_list.js),对应的url(重要)。
在这里插入图片描述
找到英雄列表的json文件(hero_list.js),对应的url(重要)。点击preview预览窗体,看到里面是json的格式,对应有hero_Id,name。

  • 代码部分

获取英雄和id

def get_hero():
    url = 'https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js'
    res = requests.get(url=url).json()
    for hero in res['hero']:
        hero_id = hero['heroId']
        # skin_url = 'https://game.gtimg.cn/images/lol/act/img/js/hero/'+hero_id+'.js'
        skin_url = f'https://game.gtimg.cn/images/lol/act/img/js/hero/{hero_id}.js'

获取皮肤图片并以英雄名字保存

def get_link(url):
    res = requests.get(url=url).json()
    for skin in res['skins']:
        info = skin.get('mainImg')
        if not info:
            # 如果不是皮肤,则跳过当前循环
            continue
        item = {}
        item['heroName'] = skin['heroName']
        # 名字中有 /  替换成 _
        item['skinName'] = skin['name'].replace('/', '_')
        item['link'] = skin['mainImg']

        # 英雄名字的文件夹
        hero_path = './imgxx/' + item['heroName'] + '/'
        if not os.path.exists(hero_path):
            # 如果文件夹不存在,则创建
            os.makedirs(hero_path)
        res = requests.get(url=item['link'])
        # 以皮肤名命名图片
        with open(hero_path + item['skinName'] + '.jpg', 'wb') as f:
            f.write(res.content)

层层调用,if name == ‘main’: 是以本文件名为主函数,调用本地的函数

if __name__ == '__main__':
    get_hero()

秀战绩!在这里插入图片描述

全部代码:

import requests
import os

def get_hero():
    url = 'https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js'
    res = requests.get(url=url).json()
    for hero in res['hero']:
        hero_id = hero['heroId']
        # skin_url = 'https://game.gtimg.cn/images/lol/act/img/js/hero/'+hero_id+'.js'
        skin_url = f'https://game.gtimg.cn/images/lol/act/img/js/hero/{hero_id}.js'
        get_link(skin_url)

def get_link(url):
    res = requests.get(url=url).json()
    for skin in res['skins']:
        info = skin.get('mainImg')
        if not info:
            # 如果不是皮肤,则跳过当前循环
            continue
        item = {}
        item['heroName'] = skin['heroName']
        # 名字中有 /  替换成 _
        item['skinName'] = skin['name'].replace('/', '_')
        item['link'] = skin['mainImg']

        # 英雄名字的文件夹
        hero_path = './imgxx/' + item['heroName'] + '/'
        if not os.path.exists(hero_path):
            # 如果文件夹不存在,则创建
            os.makedirs(hero_path)
        res = requests.get(url=item['link'])
        # 以皮肤名命名图片
        with open(hero_path + item['skinName'] + '.jpg', 'wb') as f:
            f.write(res.content)
            print(item['skinName'])


if __name__ == '__main__':
    get_hero()

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!