用Python爬取英雄聯盟(lol)所有皮膚

首先,咱們打開英雄聯盟官網主頁,網址爲:https://lol.qq.com/main.shtml,而後向下拉,能夠看到英雄列表,如圖所示:html

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

再點擊鼠標右鍵,接着選擇檢查,看一下皮膚的 URL,如圖所示:json

經過觀察,能夠發現英雄皮膚 URL 組成方式爲:https://game.gtimg.cn/images/lol/act/img/skin/big + 英雄id + 皮膚id.jpg。網絡

咱們先看皮膚id,也就是看皮膚的個數,選擇開發者工具的Network項,以後刷新一下頁面,能夠發現有一個17.js的請求,17實際就是英雄id,如圖所示:app

再選擇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的請求,如圖所示:url

與皮膚id的獲取基本相似,經過這個請求就能夠獲取到所有英雄id,代碼實現以下:spa

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 爬蟲
(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)
以上內容無用,爲本篇博客被搜索引擎抓取使用

相關文章
相關標籤/搜索