1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        用Python爬取英雄聯(lián)盟(lol)全部皮膚

        共 2429字,需瀏覽 5分鐘

         ·

        2020-11-30 14:27

        小三:“怎么了小二?一副無精打采的樣子!”

        小二:“唉!別提了,還不是最近又接觸了一個(gè)叫英雄聯(lián)盟的游戲,游戲中很多皮膚都需要花錢買,但是我錢不夠呀...”

        小三:“咋得,錢攢夠了你還要買呀?還吃不吃飯了?!要我說,你干脆將英雄的炫彩皮膚都爬下來欣賞一下得了,飯錢還給你省下了?!?/p>

        小二:“你說的也對,畢竟吃飯更重要,那我還是爬取皮膚欣賞一下算了?!?/p>

        首先,我們打開英雄聯(lián)盟官網(wǎng)主頁,網(wǎng)址為:https://lol.qq.com/main.shtml,然后向下拉,可以看到英雄列表,如圖所示:

        接著隨意選一個(gè)英雄點(diǎn)擊進(jìn)入看一下,如圖所示:

        再點(diǎn)擊鼠標(biāo)右鍵,接著選擇檢查,看一下皮膚的 URL,如圖所示:

        通過觀察,可以發(fā)現(xiàn)英雄皮膚 URL 組成方式為:https://game.gtimg.cn/images/lol/act/img/skin/big + 英雄id + 皮膚id.jpg

        我們先看皮膚id,也就是看皮膚的個(gè)數(shù),選擇開發(fā)者工具的Network項(xiàng),之后刷新一下頁面,可以發(fā)現(xiàn)有一個(gè)17.js的請求,17實(shí)際就是英雄id,如圖所示:

        再選擇Response項(xiàng)看一下相應(yīng)數(shù)據(jù),如圖所示:

        我們可以看到數(shù)據(jù)都顯示在了一行,看著不太方便,我們將其格式化看一下,如圖所示:

        通過觀察,可以發(fā)現(xiàn)獲取指定英雄皮膚id的 URL 就是:https://game.gtimg.cn/images/lol/act/img/js/hero/ + 英雄id.js,獲取皮膚id及下載皮膚圖片的代碼實(shí)現(xiàn)如下:

        hero_skin_url?=?'https://game.gtimg.cn/images/lol/act/img/js/hero/'?+?hero_id?+?'.js'
        #?通過?url?獲取英雄的皮膚數(shù)量
        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('?',?''))
        #?皮膚數(shù)量
        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)

        現(xiàn)在就差英雄id參數(shù)的獲取了,我們接著看如何獲取全部的英雄id,返回到 https://lol.qq.com/main.shtml頁面,打開開發(fā)者工具并選擇Network,然后刷新頁面,我們可以觀察到有一個(gè)hero_list.js的請求,如圖所示:

        皮膚id的獲取基本類似,通過這個(gè)請求就可以獲取到全部英雄id,代碼實(shí)現(xiàn)如下:

        url?=?'https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js'
        hero_text?=?requests.get(url).text
        #?轉(zhuǎn)為?json?格式
        hero_json?=?json.loads(hero_text)['hero']
        path?=?os.getcwd()
        #?獲取當(dāng)前文件夾路徑
        workspace?=?os.getcwd()
        #?皮膚路徑
        skin_path?=?"{}\\{}".format(workspace,?'skins')
        #?遍歷列表
        for?hero?in?hero_json:
        ????#?將每一個(gè)英雄的?id、name?放入一個(gè)字典中
        ????hero_dict?=?{'id':?hero['heroId'],?'name':?hero['name']}
        ????#?放入列表
        ????heros.append(hero_dict)

        我們可以看出:代碼中除了英雄id,還獲取了英雄name,并將每一個(gè)英雄的id、name放在了一個(gè)字典中,又將所有英雄對應(yīng)的字典放在了列表中。

        最后,我們看一下下載效果:

        源碼在公眾號 Python小二 后臺回復(fù) 201130 獲取,有問題可以添加我個(gè)人微信號:ityard。

        < END >

        如果覺得有幫助,就給個(gè)分享、在看、贊吧~

        瀏覽 63
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            激情开心五月天 | 天天日天天操天天干 | 都市激情亚洲 | 黄色片国产在线观看 | 干片网 | 日韩乱轮视频 | 免费看黄在线网站 | 国产欧美日韩专区 | 中文字幕在线日本 | 丁香五月激情六月 |