看到英雄聯盟皮膚:老玩家們都哭了!

2021-02-15 Java學習社區

有理想、有抱負,懂得自律,相信在不久的將來你會成功的!

打開微信搜索【孩子上學後】關注這個不一樣的程式設計師

夜太美,爬蟲就沒那麼危險

善於利用他人的UA

爬蟲過程

最後

夜太美,爬蟲就沒那麼危險

在爬取的時候,不要猛攻嘛~,啊啊。。人家伺服器受不了啊。。。

你要學會停頓,克制一點,該 sleep 就 sleep。

趁著人家睡覺的時候,限制防範程度是最低的,能晚點就晚點爬,沒有看過凌晨4點的洛杉磯,但是你還可以看到凌晨4點的爬蟲呢。

這樣你的IP位址才不會容易被封。

善於利用他人的UA

如果你在看別人網站的robots.txt,你就會看到別人的聲明,聲明什麼內容可以爬,什麼內容不可以爬。但是,不要忽略了人家的聲明,希望給什麼搜尋引擎爬,比如下面這個


看到沒,這個別人定義的robots.txt值得注意的是User-Agent,那麼當你在Python構造headers的時候,User-Agent就直接指定它們的robots定義的就好了啊,比如:百度的UA,Google的UA或者是搜狗的UA等等。你再去爬爬看,那叫一個友好啊。

爬蟲過程分析網頁

通過開發者模式*F12,你就會發現箭頭所指的文件了,沒有看到的話,刷新一下試試。


url0 = 'https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js'
try:
    response = requests.get(url0, headers=headers)
    response.raise_for_status()
    response.encoding = response.apparent_encoding  # 設置編碼格式
    hreolist = response.json() # 將Response轉換成json格式
    print(hreolist) # 列印出英雄列表
    print(len(hreolist['hero']))    # 列印英雄個數:151
except Exception as e:
    print(e)

通過上面的代碼,我成功的獲取到了所有的英雄,以及英雄的總個數。

這裡只是截取部分的列印信息

{'hero': [{'heroId': '1', 'name': '黑暗之女', 'alias': 'Annie', 'title': '安妮', 'roles': ['mage'], 'isWeekFree': '0', 'attack': '2', 'defense': '3', 'magic': '10', 'difficulty': '6', 'selectAudio': 'https://game.gtimg.cn/images/lol/act/img/vo/choose/1.ogg', 'banAudio': 'https://game.gtimg.cn/images/lol/act/img/vo/ban/1.ogg', 'isARAMweekfree': '0', 'ispermanentweekfree': '0', 'changeLabel': '無改動', 'goldPrice': '4800', 'couponPrice': '2000', 'camp': '', 'campId': '', 'keywords': '安妮,黑暗之女,火女,Annie,anni,heianzhinv,huonv,an,hazn,hn'}

通過上面的json信息其實你會發現,英雄的列表信息是寫在了hero下的。

獲取每一位英雄的ID值

通過剛剛獲取到的json值,你會發現,這些值裡面有一個鍵:'heroId',那麼這個'heroId'是用來做什麼的呢?

這個我開始是不知道的,接下來我進入到了皮膚原畫的網址,馬上就霍然開朗了

https://lol.qq.com/data/info-defail.shtml?id=1 安妮
https://lol.qq.com/data/info-defail.shtml?id=2 奧拉夫
https://lol.qq.com/data/info-defail.shtml?id=876 莉莉婭

通過上面的三個URL地址你就會發現heroId就是一個查詢參數id。

但是在這裡有一個坑,想必你也看到了,英雄的個數只有151個,id值卻是876,。沒錯,在前100多個英雄都不會有什麼問題很有規律,但是100多之後就出現問題了,每個英雄的id值跳轉的很多,所以要進入每一位英雄的原畫去爬圖片就必須要正確拼接URL。

url = 'https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js'
hero_list_json = hreolist
hero_lists = hero_list_json['hero']     # 獲取英雄列表
heros_id = list(map(lambda x: x['heroId'], hero_lists))     # 獲取英雄編號

分析原畫網頁

打開開發者模式,你會發現一個文件


在上圖中可以看到skins有10個值,點開第一個可以看到loadingImg,而這個鍵對應的值就是皮膚原畫的URL地址。

當然,作為老玩家們都知道,莉莉婭只有兩種皮膚,但是skins裡面為什麼有10個值,依次點開第三個至第十個,會發現其餘的loadingImg的值都是空的。

url_list = []   # 保存每一位英雄信息的url地址
for hero_id in heros_id:
       url = 'https://game.gtimg.cn/images/lol/act/img/js/hero/{}.js'.format(hero_id)
       # print(url)
       url_list.append(url)

url1 = 'https://game.gtimg.cn/images/lol/act/img/js/hero/876.js'
try:
    response = requests.get(url1, headers=headers)
    response.raise_for_status()
    response.encoding = response.apparent_encoding  # 設置編碼格式
    hreo_info = response.json()
    skins = hreo_info['skins']  # 獲取英雄皮膚信息
    # 遍歷每一個皮膚的loadingImg與皮膚名稱
    for skin in skins:
        print(skin['loadingImg'])
        print(skin['name'])

except Exception as e:
    print(e)

通過上面的兩組代碼的思路,那麼已經可以實現一個英雄的皮膚原畫的爬取了,需要獲取所有的皮膚原畫,無非就是多一個循環。

當你會爬第一個英雄的原畫時,你還怕得不到其他英雄嗎?

最後

爬取英雄聯盟的英雄原畫的思路已經分享給大家了。

請問親愛的讀者,你是否可以將王者榮耀的英雄皮膚全部拿下呢?

相信你絕對是沒有問題的,加油!

我是啃書君,一個專注於學習的人,你懂的越多,你不懂的越多,更多精彩內容我們下期再見!

相關焦點

  • 英雄聯盟:Riot正在開發英雄聯盟主題MMO,至少三年才能上線
    ,鬼蟹直接回答:「是的,這是一款MMO遊戲」MMO遊戲也就是大型多人在線遊戲,比較出名的像WOW、天刀、劍3等等,加上這次牽頭的是鬼蟹,所以很多人都在討論這不就是英雄聯盟版的《魔獸世界》嗎?確實可以這樣籠統的理解。
  • LOL:20場勝利就送永久皮膚!良心活動又來了!(皮膚貼)
    >看誰會是那個幸運兒你們S8都定了什麼段位啊?今天凌晨,英雄聯盟國服8.1版本正式上線,雖然是一個小版本更新,不過新版的武神賈克斯皮膚還是引起了不少玩家的關注,而隨著這款新皮膚的上線,國服也在今天開啟了這款皮膚的專屬活動:武神降臨!lol.qq.com/act/a20180113wushen/page1.html
  • 英雄聯盟: 當年風靡一時的多玩盒子, 怎樣被TGP蠶食殆盡?
    玩英雄聯盟比較久的玩家們都應該知道英雄聯盟盒子這個東西,它還有一個名字就是多玩LOL盒子,之前是多玩公司旗下的軟體。
  • 英雄聯盟:FPX冠軍慶典活動開啟,免費抽傳說皮膚!
    《英雄聯盟》FPX冠軍慶典活動的冠軍紀念寶箱活動今日開啟,不需要任何條件就可以直接抽一個皮膚,看你是歐皇還是非酋?【活動地址】:https://lol.qq.com/act/a20191108champion/index.html?
  • 正義聯盟主角們的中國英雄兄弟〝十豪俠〞!!
    美國本土的超級英雄有復仇者聯盟們與正義聯盟,那中國呢?上海的空軍英雄,可以與世界最先進戰機融合、變形的超級飛行員(不管是外型還是能力,都像極了蟻人,只是搭配工具從弓箭變戰鬥機)來自青海的鐵血軍人,因植入外星種族基因,皮膚變成了生物金屬
  • 英雄聯盟兩件大事:S7總決賽將在北京舉辦 冰鳥「慶典女王」皮膚發布
    1、《英雄聯盟》S7落地中國,最終決賽場地選定北京鳥巢S6還未結束之時,英雄聯盟前職業選手若風就曾透露
  • 英雄聯盟:S11改動後網吧遭重創,無數玩家表示:更新之後網吧人少一半!
    新版本導致聯盟熱度下降?神話傳說裝備或該背大鍋。‍前不久,英雄聯盟S11賽季正式開始。而更新了遊戲的朋友都發現遊戲商城內的裝備幾乎都變了樣,以前耳熟能詳的幕刃、提亞馬特等裝備無論是從屬性還是特質都和S11版本大不相同。除了老裝備之外,新添加的神話、傳說裝備機制讓很多老玩家感到頭昏腦漲,一時間,這個陪伴我們走了整個青春的遊戲變得特別陌生。
  • 再見了,英雄聯盟!
    但以後只會有三個愛好了,因為陪伴我八年的英雄聯盟,我終於決定放棄了,以後不會再玩了。它陪伴了我整整八年之久,記得12年的時候,公司的樓下有個網吧,每天晚上喝完酒回來,公司的業務員和設計們就會去那個網吧玩《英雄聯盟》,其實那時候我是不太會玩遊戲的,可能也是因為房貸的壓力大,感覺玩遊戲很幼稚,每個月才一千八的收入,去掉吃喝玩樂根本剩不下錢,手遊那會也不太流行,他們十來個人經常五五開黑,而我就在網吧裡打撞球,有時候他們人手不夠,就讓我來湊數
  • S7英雄聯盟總決賽:SSG冠軍皮膚確定!加裡奧哭暈在廁所
    2017英雄聯盟全球總決賽完美落幕,SSG戰隊以3比0的比分戰勝了SKT戰隊,奪得了全球總冠軍的最高榮耀。在三局比賽中由於SKT的AD選手BANG的狀態低迷,賽後成為了眾矢之的。而在賽後採訪中,三星眾人則談到了想要的冠軍皮膚  Cuvee:納爾不解釋  安掌門:第一次太激動,容我再想想  Crown:我塔利亞玩的比較好
  • 世界上最高等級玩家:101級的英雄聯盟狂人
    現在英雄聯盟的等級變成無上限開放,玩家每升一級就能夠獲得一個膠囊,裡面可以開出藍色精萃、英雄碎片、召喚師圖標、守衛皮膚、表情甚至海克斯寶石等獎勵。這也刺激了很多玩家去升級,而由於外服比國服早開一周,已經有不少玩家衝到了50級以上,而今天(11月24日)有一位恐怖的練級狂人出現了,那就是歐服鑽3分段的Nolife Raphael,這位從S3賽季就開始打排位的老玩家,在今天已經成功超越100級,來到了101級!
  • 英雄聯盟:電玩蓋倫皮膚正式上線!網友:終究活成了最討厭的樣子
    對於玩過英雄聯盟的人來說,最熟悉的英雄莫過於德瑪西亞之力蓋倫,在S2最早期的時候,新手還會經常用德瑪和德邦二人組走下路,一個轉一個捅簡直快哉至極
  • 英雄聯盟:欺騙你多年的四大謊言,你還以為是真理!
    英雄聯盟是個好玩且耐玩的遊戲,也正是因為如此,英雄聯盟做了八年MOBA類遊戲的翹楚!
  • lol「國服第一皮膚帝」曝光:真正的全英雄全皮膚
    「國服第一XXX」這個稱呼,相信對任何一位玩家來說都是遊戲人生中的重要榮譽。
  • 英雄聯盟:莫甘娜重做後皮膚排名 免費的最好看但已買不著
    妹妹莫甘娜則只是重新修改皮膚、原畫,甚至大多數皮膚改的還不如原版順眼,因此不少玩家都為莫甘娜妹妹謀不平。不過就算不如原版也應該有個優劣之分,近日就有大神針對莫甘娜新皮膚(勝利女神、新娘、荊棘、萬聖節)打分,綜合特效改動最大的皮膚分最高,也是最划算的。
  • 《英雄聯盟》峽谷戰新春,我們出發!
    又是一年新春到,英雄聯盟大峽谷也迎來了又一個春節,陝西將開展《英雄聯盟》新春線下網吧活動,特邀本地LOL遊戲愛好者齊聚一堂,共度新春
  • 英雄聯盟:現在的LOL號還值錢嗎?雙王者帳號才賣6600?
    但是其實很多遊戲的規定都是要求玩家實名認證不能買賣帳號的,英雄聯盟就是其中之一。就在最近幾天,有個電競博主的一篇投稿引起了網友們的爭議,大概內容就是有個玩家找代發想把自己的英雄聯盟遊戲帳號賣掉,並且直接標價6600元,這個價格可不低啊,對於一些平民玩家或者學生黨來說基本是只有看看的份了。
  • 英雄聯盟:AD為了活著不擇手段,刺客看到根本不想玩!
    英雄聯盟裡有一個非常註明的話,就是武器大師說的「最強的武器是什麼?沒錯就是補丁!」
  • 英雄聯盟手機版,終於來啦....
    10月16日,英雄聯盟的一則消息讓我很開心:現在正是S9全球總決賽期間,在英雄聯盟全球十周年慶典上,拳頭正式公布了英雄聯盟手遊的到來,並且開啟了預約。我們可以進入英雄聯盟手遊官網:https://lolm.qq.com/,或者在底部閱讀原文進行預約。在瀏覽器、微信或者QQ打開連結後,登錄帳號。
  • 英雄聯盟故事會:十大神似火影忍者的英雄盤點!
    在英雄聯盟中,有一個英雄被稱為火影!但是,你知道嗎?除了劫,其實在很多英雄身上都能看到火影的影子,甚至是神似!
  • 《英雄聯盟》2015全球總決賽中國區選拔賽賽制詳解
    9月4日-5日《英雄聯盟》四周年慶狂歡盛典將在華潤深圳灣體育中心「春繭」體育館拉開帷幕。