溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時間:2021-10-26 10:12:45 來源:億速云 閱讀:253 作者:柒染 欄目:大數(shù)據(jù)

今天就跟大家聊聊有關(guān)如何用Python爬取英雄聯(lián)盟(lol)全部皮膚,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

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


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


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

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


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

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

接著隨意選一個英雄點擊進入看一下,如圖所示:

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

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

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

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

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

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

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

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

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

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

通過觀察,可以發(fā)現(xiàn)獲取指定英雄皮膚id的 URL 就是:https://game.gtimg.cn/images/lol/act/img/js/hero/ + 英雄id.js,獲取皮膚id及下載皮膚圖片的代碼實現(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,然后刷新頁面,我們可以觀察到有一個hero_list.js的請求,如圖所示:

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

皮膚id的獲取基本類似,通過這個請求就可以獲取到全部英雄id,代碼實現(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:
    # 將每一個英雄的 id、name 放入一個字典中
    hero_dict = {'id': hero['heroId'], 'name': hero['name']}
    # 放入列表
    heros.append(hero_dict)
 

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

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

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


看完上述內(nèi)容,你們對如何用Python爬取英雄聯(lián)盟(lol)全部皮膚有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI