day2023-3-27-lol皮肤爬取

"""
Author:Ren Yulian
Create Time: 2023/3/27 17:18
Happy every day!
"""
import requests

# 请求所有英雄列表的网页
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36',
    'cookie': 'eas_sid=W1d6m7V9P9S0J7m4O2Q095p4m4; isHostDate=19443; PTTuserFirstTime=1679875200000; pgv_info=ssid=s1270348260; pgv_pvid=228582244; ts_uid=142632659; weekloop=0-0-0-13; tokenParams=%3Fid%3D1; ts_last=lol.qq.com/data/info-defail.shtml; lolqqcomrouteLine=data_data_data_data_data'
}
response = requests.get('https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js', headers=headers)

# 获取请求结果json转换的结果中所有英雄ID
# heroIds = []
for heroes in response.json()['hero']:
    # heroIds.append(hero_id['heroId'])
    hero_id = heroes['heroId']
    # 请求每一个英雄的网页
    response1 = requests.get(f'https://game.gtimg.cn/images/lol/act/img/js/hero/{hero_id}.js', headers=headers)
    for skins in response1.json()['skins']:
        name = skins['name']
        skinId = skins['skinId']

        try:
            # 请求英雄的每一个皮肤网页
            response2 = requests.get(skins['mainImg'], headers=headers)
        except requests.exceptions.MissingSchema:
            response2 = requests.get(skins['chromaImg'], headers=headers)
        except FileNotFoundError:
            pass

        result = response2.content
        with open(f'files/heroes/{skinId} {name}.jpg', 'wb') as f:
            f.write(result)
# 封装函数的思想

# 1.获取所有英雄id
def get_all_hero_id():
    response = requests.get('https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js')
    result = response.json()
    return [x['heroId'] for x in result['hero']]

# 2.下载皮肤对应的图片
def download(hero_name, skin_name, skin_url):
    # 创建英雄对应的文件夹
    if os.path.exists(f'files/{hero_name}'):
        os.mkdir(f'files/{hero_name}')

    # 下载图片
    response = requests.get(skin_url)
    with open(f'files/{hero_name}/{skin_name}.jpg', 'wb') as f:
        f.write(response.content)



# 3.获取每个英雄的皮肤地址
def get_hero_skin_url(hero_id):
    url = f'https://game.gtimg.cn/images/lol/act/img/js/hero/{hero_id}.js'
    response = requests.get(url)
    for x in response.json()['skins']:
        hero_name = x['heroTitle']
        skin_name = x['name'].replace('/', ' ')
        skin_url = x['mainImg'] if x['mainImg'] else x['chromaImg']
        download(hero_name, skin_name, skin_url)


if __name__ == '__main__':
    for x in get_all_hero_id():
        get_hero_skin_url(x)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值