吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3468|回复: 40
收起左侧

[Python 转载] python爬取lol英雄皮肤

[复制链接]
123456acD 发表于 2020-9-1 00:06
[Python] 纯文本查看 复制代码
import json
import os
import re
import random
import requests
from requests.exceptions import RequestException

# 本地保存地址
base_path = 'D:\\lol_hero_skin'
# 人机识别信息
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
                         'Chrome/80.0.3987.122 Safari/537.36'}


# 处理文件名,window系统下有些字符不允许出现\/:*?"<>| K\DA皮肤引起此问题
def handle_str(_str):
    temp = re.sub('[\\\/:*?"<>|]', '', _str)
    if len(temp) == 0:
        return ''.join(str(random.choice(range(10))) for _ in range(10))
    return temp


# 下载图片
def download_img(img_url, _base_path, name):
    r = requests.get(img_url, headers=headers, stream=True)
    print(name, r.status_code)  # 返回状态码
    if r.status_code == 200:
        name = handle_str(name)
        open(_base_path + "\\" + name + '.jpg', 'wb').write(r.content)  # 将内容写入图片
        print("done")
    del r


def load_hero_skin(heroId):
    hero_img_url_prefix = 'https://game.gtimg.cn/images/lol/act/img/js/hero/'
    hero_img_url_suffix = '.js'
    response = requests.get(hero_img_url_prefix + heroId + hero_img_url_suffix, headers=headers)
    html = json.loads(response.text)  # 将网页内容以json返回
    skinsList = html.get('skins')  # 皮肤列表
    heroName = html.get('hero').get('name')  # 黑暗之女
    heroTitle = html.get('hero').get('title')  # 安妮
    heroName = handle_str(heroName)
    heroTitle = handle_str(heroTitle)
    hero_skins_path = base_path + '\\' + heroName + ' ' + heroTitle
    if not os.path.exists(hero_skins_path):
        print('不存在,创建中。。。')
        os.makedirs(hero_skins_path, 755)
    for n in skinsList:
        skinName = n.get('name')
        _chromas = n.get('chromas')  # 0:是基础、1:炫彩
        mainImg = n.get('mainImg')  # 皮肤图片地址
        # print(skinName)
        # print(_chromas)
        # print(mainImg)
        if _chromas == '0':
            # 下载该图片
            download_img(mainImg, hero_skins_path, skinName)


# 获取全部英雄对象json
def get_hero_json():
    try:
        hero_list_url = 'https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js'
        response = requests.get(hero_list_url, headers=headers)
        html = json.loads(response.text)  # 将网页内容以json返回
        print('版本:', html.get('version'))
        print('文件名:', html.get('fileName'))
        print('文件更新时间:', html.get('fileTime'))
        print('总英雄数量:', len(html.get('hero')))
        for i in html.get('hero'):
            heroId = i.get('heroId')
            load_hero_skin(heroId)
    except RequestException:
        return None


def main():
    get_hero_json()


# 当.py文件被直接运行时,当.py文件以模块形式被导入时,if __name__ == '__main__'之下的代码块不被运行。
if __name__ == '__main__':
    main()

免费评分

参与人数 4吾爱币 +4 热心值 +4 收起 理由
细水流长 + 3 + 1 热心回复!
觅寻 + 1 热心回复!
没事好好 + 1 谢谢@Thanks!
Zeaf + 1 + 1 我很赞同!注释详细

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

佐佐木琲世 发表于 2020-9-2 09:53
我的城市没有海 发表于 2020-9-1 09:37
谁和你说的不封,我用skinlolpro都封好几次一天了,我朋友用换肤大师都封好几次。前几个星期cc换肤有人还 ...

封号的原因是因为软件开着被检测到,不是换肤被检测到,换成没有客户端的劫持注入就不会封号了,无论Call还是Hook,都是一直稳的
我的城市没有海 发表于 2020-9-4 17:20
佐佐木琲世 发表于 2020-9-3 17:35
以前我们宿舍三个人在用,从来没封过呀

之前用cc换肤的 我知道的就有十几个被封3年(应该是误封,一般都封几天) 后面很多人都被解封 所有换肤软件都有封号的可能 你没被封不代表不会封
haruego 发表于 2020-9-1 00:16
能动者与受动者 发表于 2020-9-1 00:21
一脸懵逼地进来,又一脸懵逼地出去…
chhzll 发表于 2020-9-1 00:32
https://game.gtimg.cn/?
嫩皮猪 发表于 2020-9-1 01:55
现在改皮肤不封号了?
佐佐木琲世 发表于 2020-9-1 02:17
嫩皮猪 发表于 2020-9-1 01:55
现在改皮肤不封号了?

一直都不封啊
Cmilyci 发表于 2020-9-1 03:23

   以前用LOLMODSKIN  然后泛滥后有一天被封了就再也没用过了。
woyaoshangshiqi 发表于 2020-9-1 05:19
我一直用的LOL换肤盒子?
eastkyo 发表于 2020-9-1 06:34
正在学习爬虫,留着参考学习
CQLYES 发表于 2020-9-1 06:45
谢谢分享,等下试试
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-22 06:22

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表