<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 2429字,需瀏覽 5分鐘

           ·

          2020-11-30 14:27

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

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

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

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

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

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

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

          通過觀察,可以發(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,如圖所示:

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

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

          通過觀察,可以發(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的請求,如圖所示:

          皮膚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()
          #?獲取當前文件夾路徑
          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,并將每一個英雄的idname放在了一個字典中,又將所有英雄對應(yīng)的字典放在了列表中。

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

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

          < END >

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

          瀏覽 63
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产操逼视频大全 | 99人妻人人爽人人添人人精品 | 亚洲理论电影 | 欧美成人A级毛片 | 亚洲日韩欧美视频 |