Python爬蟲入門(1):手把手教你獲取王者榮耀全皮膚高清壁紙

本文手把手教你使用Python擼取所有王者榮耀全皮膚高清壁紙的全過程~~~,代碼僅30余行,可簡單上手實操。

開篇

前幾天看到同事的桌面壁紙是王者榮耀的炫酷后羿皮膚蝉揍,覺得十分帥氣啃炸,于是想自己也弄一個,可是王者皮膚這么多一個個點網頁找太費勁加派,何不一把擼下來一起看呢阁簸,于是想著把所有的英雄皮膚都下載到本地的一個目錄下面慢慢選多好,說干就干....那我們就開始吧哼丈。

網頁分析

首先启妹,我們進去王者榮耀官網,點進“英雄資料”界面:

image

按F12打開調試臺醉旦,隨便點擊一個英雄如后翌饶米,找到英雄原皮膚的圖片地址:

image

鼠標在英雄的不同皮膚頭像上滑動,發(fā)現圖片的url地址會發(fā)生變化车胡,但是只有最后一個數字在改變檬输,進一步發(fā)現皮膚號是從1,2,3...一直往后編的。好了找到了圖片的編碼規(guī)律匈棘,下面我們再看看不同英雄的圖片url地址有什么不同丧慈。

image

我們回到“英雄資料”界面,點擊另外一個英雄露娜,對比一下后羿與露娜英雄壁紙的url地址逃默,發(fā)現僅僅有一個數字是不相同的鹃愤,后羿是169,露娜是146完域,如下所示软吐。因此我們猜測這個數字應該是代表的英雄編號。

# 后羿圖片url: 'game.gtimg.cn/images/yxzj/img201606/skin/heroinfo/169/169-bigskin-1.jpg'
# 露娜圖片url: 'game.gtimg.cn/images/yxzj/img201606/skin/heroinfo/146/146-bigskin-1.jpg'

繼續(xù)回到英雄資料的界面吟税,按F5刷新界面凹耙,看到有一個herolist.json的文件:

image

將herolist.json文件下載下來打開一看如下圖,發(fā)現后翌的編號就是169肠仪。至此肖抱,我們已經完成了我們的分析工作,圖片的url地址以及英雄的編號還有皮膚名稱也都有了异旧,下面來把照片打包擼下來吧虐沥。

image

編碼實現

首先下載herolist.json文件,獲取文件內容泽艘,并解析:

# 英雄編號及皮膚信息
hero_list_url = 'https://pvp.qq.com/web201605/js/herolist.json'
# 發(fā)送get請求獲取數據
hero_list = requests.get(hero_list_url)
# 將獲取json數據
hero_list_json = hero_list.json()

進行英雄編號以及圖片編號的url拼接:

http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{}/{}-bigskin-{}.jpg'.format(hero_num, hero_num, pic_num)欲险,其中hero_num表示英雄編號,pic_num表示圖片編號匹涮,從1開始天试。

解析herolist.json,并進行圖片下載然低,為了防止被檢測出來是爬蟲喜每,每次下載圖片隨機間隔0-1秒之間的時間,圖片存儲名稱為英雄名_皮膚名稱.jpg雳攘。

for each_hero in hero_list_json:
    hero_name = each_hero['cname'] # 獲取英雄名稱
    hero_num = each_hero['ename']  # 獲取英雄編號
    # 獲取該英雄的皮膚名稱列表
    skin_name_list = each_hero.get('skin_name').split('|')if each_hero.get('skin_name') else []
    for i in range(10):
        pic_num = i + 1 # 圖片編號是從1開始的
        # # 有些圖片在json文件中沒寫皮膚名稱, 就將皮膚名稱標為未知
        skin_name = skin_name_list[i] if i <= len(skin_name_list)  else '未知{}'.format(i)
        pic_link = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{}/{}-bigskin-{}.jpg'.format(hero_num, hero_num, pic_num)
        request_res = requests.get(pic_link)
        img_path_name = os.path.join(save_path_pre,'{}_{}.jpg'.format(hero_name, skin_name))
        if request_res.status_code == 200:
            with open(img_path_name, 'wb') as f:
                f.write(request_res.content)
            all_skin_counts += 1
            print('第{}張下載成功: {}|{}'.format(all_skin_counts,hero_name, skin_name))
            time_rand = random.random() 
            time.sleep(time_rand) #隨機間隔0-1秒的時間带兜,防止被檢測出來是爬蟲

完整代碼如下

import os
import requests
import time
import random
# 英雄編號及皮膚信息
hero_list_url = 'https://pvp.qq.com/web201605/js/herolist.json'
# 發(fā)送get請求獲取數據
hero_list = requests.get(hero_list_url)
# 將獲取json數據
hero_list_json = hero_list.json()

# 存儲目錄,須在本地創(chuàng)建
save_path_pre = 'F:/wzry_heropics'
if not os.path.exists(save_path_pre):
    os.makedirs(save_path_pre)
all_skin_counts = 0
for each_hero in hero_list_json:
    hero_name = each_hero['cname'] # 獲取英雄名稱
    hero_num = each_hero['ename']  # 獲取英雄編號
    # 獲取該英雄的皮膚名稱列表
    skin_name_list = each_hero.get('skin_name').split('|')if each_hero.get('skin_name') else []
    for i in range(10):
        pic_num = i + 1 # 圖片編號是從1開始的
        # # 有些圖片在json文件中沒寫皮膚名稱, 就將皮膚名稱標為未知
        skin_name = skin_name_list[i] if i <= len(skin_name_list)  else '未知{}'.format(i)
        pic_link = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{}/{}-bigskin-{}.jpg'.format(hero_num,hero_num,pic_num)
        request_res = requests.get(pic_link)
        # 圖片存儲路徑
        img_path_name = os.path.join(save_path_pre,'{}_{}.jpg'.format(hero_name, skin_name))
        if request_res.status_code == 200:
            with open(img_path_name, 'wb') as f:
                f.write(request_res.content)
            all_skin_counts += 1
            print('第{}張下載成功: {}|{}'.format(all_skin_counts,hero_name, skin_name))
            time_rand = random.random()
            time.sleep(time_rand) #隨機間隔0-1秒的時間吨灭,防止被檢測出來是爬蟲

好了刚照,爽了,終于搞定了喧兄。最終成功擼下了全部的427張高清全英雄皮膚照片无畔,成果如下:

image
image
image

哈哈,終于可以方便的選擇自己喜歡的高清皮膚壁紙當桌面啦~~~

特別說明:本文僅供技術交流吠冤,切勿用作非法或者商業(yè)用途浑彰。
如果喜歡本文,歡迎點贊 并 關注作者拯辙,后續(xù)將會不斷更新干貨文章郭变,以供大家共同學習交流,謝謝!

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末诉濒,一起剝皮案震驚了整個濱河市周伦,隨后出現的幾起案子,更是在濱河造成了極大的恐慌循诉,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件撇他,死亡現場離奇詭異茄猫,居然都是意外死亡,警方通過查閱死者的電腦和手機困肩,發(fā)現死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門划纽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人锌畸,你說我怎么就攤上這事勇劣。” “怎么了潭枣?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵比默,是天一觀的道長。 經常有香客問我盆犁,道長命咐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任谐岁,我火速辦了婚禮醋奠,結果婚禮上,老公的妹妹穿的比我還像新娘伊佃。我一直安慰自己窜司,他們只是感情好,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布航揉。 她就那樣靜靜地躺著塞祈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪帅涂。 梳的紋絲不亂的頭發(fā)上织咧,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天,我揣著相機與錄音漠秋,去河邊找鬼笙蒙。 笑死,一個胖子當著我的面吹牛庆锦,可吹牛的內容都是我干的捅位。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼艇搀!你這毒婦竟也來了尿扯?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤焰雕,失蹤者是張志新(化名)和其女友劉穎衷笋,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體矩屁,經...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡辟宗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了吝秕。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泊脐。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖烁峭,靈堂內的尸體忽然破棺而出容客,到底是詐尸還是另有隱情,我是刑警寧澤约郁,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布缩挑,位于F島的核電站,受9級特大地震影響鬓梅,放射性物質發(fā)生泄漏调煎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一己肮、第九天 我趴在偏房一處隱蔽的房頂上張望士袄。 院中可真熱鬧,春花似錦谎僻、人聲如沸娄柳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赤拒。三九已至,卻和暖如春诱鞠,著一層夾襖步出監(jiān)牢的瞬間挎挖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工航夺, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蕉朵,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓阳掐,卻偏偏與公主長得像始衅,于是被迫代替她去往敵國和親冷蚂。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內容

  • 引言 王者榮耀大家都玩過吧汛闸,沒玩過的也應該聽說過蝙茶,作為時下最火的手機MOBA游戲,咳咳诸老,好像跑題了隆夯。我們今天的重點...
    wangweijun閱讀 522評論 0 1
  • 緒論 網絡爬蟲(又稱為網頁蜘蛛,網絡機器人别伏,在FOAF社區(qū)中間蹄衷,更經常的稱為網頁追逐者),是一種按照一定的規(guī)則畸肆,自...
    Python小學生鄔恒閱讀 1,049評論 0 1
  • 漸變的面目拼圖要我怎么拼抡砂? 我是疲乏了還是投降了大咱? 不是不允許自己墜落, 我沒有滴水不進的保護膜注益。 就是害怕變得面...
    悶熱當乘涼閱讀 4,234評論 0 13
  • 感覺自己有點神經衰弱碴巾,總是覺得手機響了;屋外有人走過丑搔;每次媽媽不聲不響的進房間突然跟我說話厦瓢,我都會被嚇得半死!一整...
    章魚的擁抱閱讀 2,169評論 4 5
  • 夜鶯2517閱讀 127,712評論 1 9