zoukankan      html  css  js  c++  java
  • 用Python爬取英雄联盟(lol)全部皮肤

    首先,我们打开英雄联盟官网主页,网址为:https://lol.qq.com/main.shtml,然后向下拉,可以看到英雄列表,如图所示:

    接着随意选一个英雄点击进入看一下,如图所示:

    再点击鼠标右键,接着选择检查,看一下皮肤的 URL,如图所示:

    通过观察,可以发现英雄皮肤 URL 组成方式为:https://game.gtimg.cn/images/lol/act/img/skin/big + 英雄id + 皮肤id.jpg。

    我们先看皮肤id,也就是看皮肤的个数,选择开发者工具的Network项,之后刷新一下页面,可以发现有一个17.js的请求,17实际就是英雄id,如图所示:

    再选择Response项看一下相应数据,如图所示:

    我们可以看到数据都显示在了一行,看着不太方便,我们将其格式化看一下,如图所示:

    通过观察,可以发现获取指定英雄皮肤id的 URL 就是:https://game.gtimg.cn/images/lol/act/img/js/hero/ + 英雄id.js,获取皮肤id及下载皮肤图片的代码实现如下:

    hero_skin_url = 'https://game.gtimg.cn/images/lol/act/img/js/hero/' + hero_id + '.js'
    # 通过 url 获取英雄的皮肤数量
    skin_text = requests.get(hero_skin_url).text
    skin_json = json.loads(skin_text)
    skin_list = skin_json['skins']
    # 获取皮肤名
    hero_skins.clear()
    for skin in skin_list:
        hero_skins.append(skin['name'].replace('/', '').replace('\', '').replace(' ', ''))
    # 皮肤数量
    skins_num = len(hero_skins)
    s = ''
    for i in tqdm(range(skins_num), desc='【' + hero_name + '】皮肤下载'):
        if len(str(i)) == 1:
            s = '00' + str(i)
        elif len(str(i)) == 2:
            s = '0' + str(i)
        elif len(str(i)) == 3:
            pass
        try:
            # 拼接指定皮肤的 url
            skin_url = 'https://game.gtimg.cn/images/lol/act/img/skin/big' + hero_id + '' + s + '.jpg'
            img = requests.get(skin_url)
        except:
            # 没有炫彩皮肤 url 则跳过
            continue
        # 保存皮肤图片
        if img.status_code == 200:
            with open(hero_skins[i] + '.jpg', 'wb') as f:
                f.write(img.content)

    现在就差英雄id参数的获取了,我们接着看如何获取全部的英雄id,返回到 https://lol.qq.com/main.shtml页面,打开开发者工具并选择Network,然后刷新页面,我们可以观察到有一个hero_list.js的请求,如图所示:

    与皮肤id的获取基本类似,通过这个请求就可以获取到全部英雄id,代码实现如下:

    url = 'https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js'
    hero_text = requests.get(url).text
    # 转为 json 格式
    hero_json = json.loads(hero_text)['hero']
    path = os.getcwd()
    # 获取当前文件夹路径
    workspace = os.getcwd()
    # 皮肤路径
    skin_path = "{}\{}".format(workspace, 'skins')
    # 遍历列表
    for hero in hero_json:
        # 将每一个英雄的 id、name 放入一个字典中
        hero_dict = {'id': hero['heroId'], 'name': hero['name']}
        # 放入列表
        heros.append(hero_dict)

    我们可以看出:代码中除了英雄id,还获取了英雄name,并将每一个英雄的id、name放在了一个字典中,又将所有英雄对应的字典放在了列表中。

    最后,我们看一下下载效果:

     

    注意:如果你是打算找python高薪工作的话。我建议你多写点真实的企业项目积累经验。不然工作都找不到,当然很多人没进过企业,怎么会存在项目经验呢? 所以你得多找找企业项目实战多练习下撒。如果你很懒不想找,也可以进我的Python交流圈:1156465813。群文件里面有我之前在做开发写过的一些真实企业项目案例。你可以拿去学习,不懂都可以在裙里找我,有空会耐心给你解答下。

     

    以下内容无用,为本篇博客被搜索引擎抓取使用
    (* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)
    python 是干什么的 零基础学 python 要多久 python 为什么叫爬虫
    python 爬虫菜鸟教程 python 爬虫万能代码 python 爬虫怎么挣钱
    python 基础教程 网络爬虫 python python 爬虫经典例子
    python 爬虫
    (* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)
    以上内容无用,为本篇博客被搜索引擎抓取使用

  • 相关阅读:
    CF140CNew Year Snowmen
    ZR10.1青岛集训三地联考
    CF1228——记一次和紫名失之交臂的CF
    CF1220
    codeforce 382 div2 E —— 树状dp
    codeforce 381 div2
    codeforce 380(div.2)
    Bishops Alliance—— 最大上升子序列
    codeforce 379(div.2)
    模板——BigInteger
  • 原文地址:https://www.cnblogs.com/shuchongzeishuai/p/14059748.html
Copyright © 2011-2022 走看看