利用python爬取王者榮耀英雄皮膚圖片


  前兩天看到同學用python爬下來LOL的皮膚圖片,感覺挺有趣的,我也想試試,於是決定來爬一爬王者榮耀的英雄和皮膚圖片。

  首先,我們找到王者的官網http://pvp.qq.com/web201605/herolist.shtml,我們可以在里面找到王者所有的英雄。

 

  然后,簡單的分析一下結構,看看是否有反爬機制。

 

  之后,在上網查閱資料后,發現所有的英雄編號,名字和皮膚都存放在一個叫herolist.json的文件中,但是我打開這個文件卻是一堆意義不明的符號,不過這並不影響我們繼續。

 

  接下來我們點擊進入英雄的詳情頁面,發現皮膚的地址都是相同格式的

 

  我們不難發現其中的規律,那么接下來我們就要開始寫代碼了。

  完整代碼如下:

import requests
import json
import os
import time

start = time.time()
url = requests.get('http://pvp.qq.com/web201605/js/herolist.json').content
jsonFile = json.loads(url)  # 提取json

x = 0  # 計數器,記錄下載了多少張圖片
# 創建目錄
hero_dir = 'D:\wzry\wzry'
if not os.path.exists(hero_dir):
    os.mkdir(hero_dir)

try:    #使用一個簡單的異常處理,防止代碼在運行時出現錯誤
  for m in range(len(jsonFile) - 1):
    ename = jsonFile[m]['ename']  # 編號
    cname = jsonFile[m]['cname']  # 英雄名字
    skinName = jsonFile[m]['skin_name'].split('|')
    skinNumber = len(skinName)

    # 下載圖片,構造圖片網址
    for bigskin in range(1, skinNumber + 1):
      urlPicture = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' + str(ename) + '/' + str(
        ename) + '-bigskin-' + str(bigskin) + '.jpg'
      picture = requests.get(urlPicture).content  # 獲取圖片的二進制信息
      with open(hero_dir + cname + "-" + skinName[bigskin - 1] + '.jpg', 'wb') as f:  # 保存圖片
        f.write(picture)
        x = x + 1
        print("正在下載第" + str(x) + "張圖片")
except Exception:
  print()
else:
  print()

 

  下面是我的運行結果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM