欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-04-30 18:25:59
...

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

  • 分析网站

【Python应用】爬取LOL皮肤图片(面向过程编程)
【Python应用】爬取LOL皮肤图片(面向过程编程)
找到英雄列表的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()

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

全部代码:

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()

相关标签: Python应用