queryselectorall 怎么取name_用這個方法,我爬取了《王者榮耀》《英雄聯盟》等游戲皮膚圖片...

本文簡介:本文使用Python制作爬蟲,來爬取《英雄聯盟》《王者榮耀》《神之浩劫》等游戲官方網站的英雄皮膚圖片。可以作為新手爬蟲的練手實戰案例!!

愛打游戲的各位肯定也是對游戲里面制作精美,嫵媚無比或是帥氣逼人的皮膚有一種莫名的熱愛吧哈哈哈哈!對于騰訊的這三款MOBA游戲,其中《王者榮耀》和《英雄聯盟》大部分人可能都不會陌生,反正沒玩過肯定也聽過。對于MOBA游戲,總會讓人感嘆:不怕神一樣的對手,就怕豬一樣的隊友。。。。。。當然自己也有一頓操作猛如虎,一看操作0-5的經歷。

在瀏覽這些游戲官方網站的時候發現英雄的皮膚很好看,例如這一張:

6867a21393c8f71610ab9c5840ad4fe8.png

想拿這張來做電腦壁紙,于是就打開開發者工具找到了這張壁紙的地址下載下來。但是我還想要趙云的其他皮膚壁紙,還想要其他英雄的所有皮膚壁紙,還想要《英雄聯盟》《神之浩劫》的皮膚壁紙,這樣就用到爬蟲啦!!

  • 這里主要講解《王者榮耀》的爬取方法,其他類似。《王者榮耀》所有英雄

首先進入所有英雄列表,你會看到下圖:

e113f0d37444fd8080cfb0115bdb6aa6.png

在這個網頁中包含了所有的英雄,頭像及英雄名稱。

  • 單個英雄

點擊其中一個英雄的頭像,例如第一個“虞姬”,進去后如下圖:

2e4cde495bf2ba5acbe9b485c198217a.png
  • “虞姬”里面有兩個皮膚圖片(如右下角所示)。我們就是要抓取這樣的圖片(注意:不是右下角那四張小圖,而是如上圖所示中的大圖)。在這個網頁中查看“虞姬”的網址,可以看到網址是:https://pvp.qq.com/web201605/herodetail/174.shtml。其實網址中174.shtml以前的字符都是不變的,變化的只是174.shtml。那么174是什么呢?乍一看毫無意義,其實它是“虞姬”這個英雄所對應的數字(我也不知道為啥這樣對應!!)。也就是說,要想爬取圖片你就應該進入每個英雄皮膚圖片所在的網址。就像上圖所示的“虞姬”。而要爬取所有英雄的圖片,就應該有所有單個英雄的網址。所有英雄的網址的關鍵就是每個英雄對應的數字。那么這些數字怎么找呢?英雄數字

在所有英雄列表中,打開瀏覽器的開發者工具(F12),刷新,找到一個json格式的文件,如圖所示:

c3ff26a3c1d75383c47c3fec4a2a7cf4.png

這時就會看到所有英雄對應的數字了。在上圖所示的Headers中可以找到該json文件對應的網址形式。將其導入Python,把這些數字提取出來,然后模擬出所有英雄的網址即可(網址的格式在上一小節中已經提過了)。

前面幾個小節的代碼如下(我的是Ubuntu(Linux)系統):

#爬取王者榮耀英雄圖片#導入所需模塊import requestsimport reimport os#導入json文件(里面有所有英雄的名字及數字)url='http://pvp.qq.com/web201605/js/herolist.json' #英雄的名字jsonhead={'User-Agent':'換成你自己的head'}html = requests.get(url,headers = head)html=requests.get(url)html_json=html.json()#提取英雄名字和數字hero_name=list(map(lambda x:x['cname'],html_json)) #名字hero_number=list(map(lambda x:x['ename'],html_json)) #數字
  • 下載圖片

現在可以進入所有英雄的網址了,可以爬取網址下的圖片了。進入一個英雄的網址,打開開發者工具,在NetWork下刷新并找到英雄的皮膚圖片(記住是大圖)。如圖所示:

d576625f4bd06d50dc02d0858017ce1d.png

然后在Headers中查看該圖片的網址。會發現皮膚圖片是有規律的。我們可以用這樣的方式來模擬圖片網址:'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/'+str(v)+'/'+str(v)+'-bigskin-'+str(u)+'.jpg',在該網址中只有str(v)與str(u)是改變的(str( )是Python中的一個函數),str(v)是英雄對應的數字,str(u)只是圖片編號,例如第一個圖片就是1,第二個就是2,第三個。。。。。。而一個英雄的皮膚應該不會超過12個(如果你不放心可以將這個值調到20等)。既然英雄皮膚的網址也有了,下面就是下載了!!

下載的代碼如下(有些地址要換成你自己的):

def main(): #用于下載并保存圖片 ii=0 for v in hero_number: os.mkdir("/home/wajuejiprince/圖片/WZRY/"+hero_name[ii]) #換成你自己的 os.chdir("/home/wajuejiprince/圖片/WZRY/"+hero_name[ii]) #換成你自己的 ii=ii+1 for u in range(12): onehero_links='http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/'+str(v)+'/'+str(v)+'-bigskin-'+str(u)+'.jpg' im = requests.get(onehero_links) if im.status_code == 200: iv=re.split('-',onehero_links) open(iv[-1], 'wb').write(im.content)

執行完上面的代碼后只需要執行main函數就行了

main()

爬取下來的圖片是這樣,每個文件夾里面是該英雄對應的圖片,如下圖:

5b97ca9b00d1f64c80f01d460a792af7.png
  • 《英雄聯盟》(美服)(兩種方法)

這兩種方法的區別就在于:第一種不用觀察圖片規律,直接提取圖片網址;第二種和抓取《王者榮耀》類似,都是模擬圖片地址。

  • 第一種

這一種是在提取圖片網址的時候直接使用正則表達式來匹配出圖片網址。代碼如下:

#導入模塊import requestsimport refrom bs4 import BeautifulSoupimport os

得到英雄的名字:

url='http://ddragon.leagueoflegends.com/cdn/6.24.1/data/en_US/champion.json' #json里面含有所有英雄的名字def get_hero_name(url):  head={'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/59.0.3071.109 Chrome/59.0.3071.109 Safari/537.36'} html = requests.get(url,headers = head) heml_json=html.json() hero_name=heml_json['data'].keys() list_of_nameMax=list(hero_name) #此時的英雄名字的首字母是大寫 list_of_nameMin=[] #此時的名字就是小寫了 for ii in list_of_nameMax: name=ii.lower() list_of_nameMin.append(name)  return list_of_nameMin 

定義下載一個英雄圖片的函數:

def get_onehero_img(name): #下載一個英雄的所有皮膚圖片 url2='http://gameinfo.na.leagueoflegends.com/en/game-info/champions/'+name+'/' head={'User-Agent':'你自己的headers'} html = requests.get(url2,headers=head) contents=html.text soup=BeautifulSoup(contents) hero_img=soup.findAll('img') reg=re.compile(r'"http://ddragon.leagueoflegends.com/cdn/img/.*?.jpg"',re.S) hero_img_links=re.findall(reg,str(hero_img)) return hero_img_links

下載保存圖片(保存地址要改):

def main(): #用于下載并保存圖片 list_name=list_of_name for i in list_name: os.mkdir("/home/wajuejiprince/圖片/LOL/"+i) os.chdir("/home/wajuejiprince/圖片/LOL/"+i)  ashe=get_onehero_img(i) for j in ashe: im=re.sub('"','',j) ir = requests.get(im) if ir.status_code == 200: ip=re.sub('"','',j) iu=re.split('/',im) open(iu[-1], 'wb').write(ir.content)

執行:

if __name__ == "__main__": list_of_name=get_hero_name(url) main()
  • 第二種
import requestsimport reimport os

得到英雄名字:

url='http://ddragon.leagueoflegends.com/cdn/6.24.1/data/en_US/champion.json' #json里面含有所有英雄的名字def get_hero_nameMax(url):  head={'User-Agent':'你自己的headers'} html = requests.get(url,headers = head) heml_json=html.json() hero_name=heml_json['data'].keys() list_of_nameMax=list(hero_name) #此時的英雄名字的首字母是大寫 return list_of_nameMax

下載圖片(保存地址要改):

onehero_links=[]list_of_nameMax=get_hero_nameMax(url)def main(): #用于下載并保存圖片 for fn in list_of_nameMax: os.mkdir("/home/wajuejiprince/圖片/LOL2/"+fn) os.chdir("/home/wajuejiprince/圖片/LOL2/"+fn)  for v in range(20):  onehero_links='http://ddragon.leagueoflegends.com/cdn/img/champion/splash/'+fn+'_'+str(v)+'.jpg' im = requests.get(onehero_links) if im.status_code == 200: iv=re.split('/',onehero_links) open(iv[-1], 'wb').write(im.content)

執行:

main()
  • 《神之浩劫》(美服)
import requestsimport reimport osurl='https://www.smitegame.com/gods/'head={'User-Agent':'你的head'}html = requests.get(url,headers = head)reg=re.compile(r'href="(.*?)"> ',re.S) items2=re.findall(reg2,html_hero.text) del items2[0] return items2#每個英雄的名字hero_name=list(map(lambda x:re.split('/',x)[-2],hero_url))def main(): #用于下載并保存圖片 ii=0 for v in hero_url: os.mkdir("/home/wajuejiprince/圖片/Smite/"+hero_name[ii]) os.chdir("/home/wajuejiprince/圖片/Smite/"+hero_name[ii])  ii=ii+1 one_hero=[] one_hero=one_hero_picture(v)  for u in one_hero: im = requests.get(u) if im.status_code == 200: iv=re.split('/',u) open(iv[-1], 'wb').write(im.content)main()

對于《神之浩劫》的代碼有些英雄在json文件中的名字還不是該英雄網址的名字,記得應該是孫悟空等,只需將hero_name中這些英雄的名稱改對即可(我沒有改,所以沒有下全)。

  • 最后--美圖欣賞

蔡文姬:

77a25bcc81d3ba550d099dce9eef9e30.png

狄仁杰:

7d5b464d58943d448e52264199b43980.png

賈克斯:

5d3d7419697198af7bd943f664b9a0ac.png

阿格尼:

5363e848b5cd714a269561600f3a6235.png

嫦娥:

e8cbb3b677e68fd24d0cecb637bc0703.png

敖廣:

6eefd3f2a79347ba81d420f3c87cdde5.png

ok,這樣想要的皮膚圖片就都出來啦!大家可以留言看看有沒有志同道合的喜愛同款皮膚的伙伴哈哈哈哈~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/531820.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/531820.shtml
英文地址,請注明出處:http://en.pswp.cn/news/531820.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

云端計算機可以玩游戲么,手機掌上云電腦是什么?為什么可以玩PC游戲?

原標題:手機掌上云電腦是什么?為什么可以玩PC游戲?經常會在一些短視頻平臺上看到別人用云電腦的應用在手機上玩PC游戲,那么這個掌上云電腦的應用到底是什么呢?為什么可以玩PC游戲呢?按照以往的理解&#xf…

codeforces——Little Pony and Sort by Shift

1 /*2 題目大意:給你一個序列,不斷地將最后邊的數值移動到最前邊,問最少經過多少次可以變成一個單調遞增的序列! 3 如果不能則輸出-1。 4 如果該序列按照不斷從后向前移動排序成功,那么該序列要么只有一個單調遞增的…

用python玩轉數據慕課答案第三周_大學慕課用Python玩轉數據答案公眾號

抹灰用石灰膏的熟化時間不少于多少天?16只兔子,分別裝在5個籠子里,每個籠子里的小兔子只數都不相等,籠子里最不可能出現的只數是( )。患者,女,44歲。患心肌梗死住院治療,首次靜脈泵入硝酸甘油時…

計算機組策略怎么設置遠程桌面,組策略 之 ? 自動啟用客戶端遠程桌面功能

在企業里進行管理的時候,有時需要利用遠程桌面來管理客戶端計算機,在一般情況下,往往需要客戶端啟用此功能,有沒有好的辦法,讓客戶端自動啟用呢?當然可以,我們可以通過組策略的形式來完成。實施…

codeforces——Little Pony and Expected Maximum

1 /*2 我們枚舉每次選擇最大數值的情況:m個數, 投擲n次3 最大值是1: 1種4 2: 2^n-15 3: 3^n-2^n6 .....7 m: m^n-(m-1)^n8 9 所以最后的結果sum((k/m)^n …

華北水利水電大學c語言程序設計四_我校代表隊在“中國高等計算機大賽——團體程序設計天梯賽” 中喜獲佳績...

近日,第四屆“中國高校計算機大賽——團體程序設計天梯賽”全國總決賽獲獎名單公布,我校以全國高校排名第84位,河南省高校第4名的成績獲得河南省高校二等獎。我校派出的“NCWU_面壁者”,“NCWU_彈星者”和“NCWU_執劍人”三支隊伍…

計算機控制基礎知識,最新 分析計算機控制系統及其運算基礎知識-精品

分析計算機控制系統及其運算基礎知識系統程序層的工作基礎建立在控制系統改造和擴充過的機器,下文就是關于控制系統及其運算基礎知識論文。隨著技術的飛進發展,計算機控制系統及其操作過程的運算程序研究已成為一個熱門話題,本文主要對計算機…

當我不再依賴你的時候說說_不要依賴任何人說說 不要指望別人的經典話

1、靜下心慢慢變得沉穩,不再依賴任何人, 珍惜身邊人 ,不強求不勉強每天都要很開心。2、的確沒什么人可以陪你一輩子,所以在那些難熬的日子過去之后,將會不再依賴任何人成長。3、自己一個人走在路上,才發現依…

Uvaoj 11624 - Fire!

1 /*************************************************************************2 > File Name: test.cpp3 > Author: HJZ4 > Mail: 2570230521qq.com 5 > Created Time: 2014年08月03日 星期日 07時26分58秒6 ********************************…

android 版本更新工具類_報表分析工具FastReport .Net 2021年超大版本更新,實現了對.NET 5的支持...

在FastReport .NET 2021.1的新版本中,我們實現了對.NET 5的支持。添加了新條形碼-Deutsce Post Leitcode。將RTF轉換為報告對象的算法已得到顯著改進。并且還添加了用于轉換數字的新功能。歡迎下載體驗。(點擊下方按鈕下載)立即點擊下載FastR…

中國科學院大學計算機金智,金智-中國科學院大學-UCAS

發表論文(1) Carrier-Number-Fluctuation induced ultralow 1/f noise level in top-gated graphene field effect transistors, ACS Applied Materials & Interfaces, 2017, 通訊作者(2) The two timescales in the charge trapping mechanism for the hysteresiss behavi…

win7下搭建PHP mysql_簡單介紹win7下搭建apache+php+mysql開發環境

環境目錄:E:\dev?一、Apache我們下載VC11運行庫的1.安裝說明:運行apache安裝程序,方法非常簡單,彈安裝界面后一直“next”接著會出現一個界面,需要填寫3個內容,分別為:Network Domain、Server …

poj 3101Astronomy(圓周追擊+分數最小公倍數)

1 /*2 本題屬于圓周追擊問題:3 假設已知兩個圓周運動的物體的周期分別是a ,b, 設每隔時間t就會在同一條直線上 4 在同一條直線上的條件是 角度之差為 PI !5 那么就有方程 (2PI/a - 2PI/b)* tPI 所以就有 tab/(2|a-b|);6 …

廣東省計算機應用考試試題,2015廣東省計算機等級考試試題 二級C試題最新考試試題庫...

1、在計算機的應用中,“DSS”表示( B )A、管理信息系統 B、決策支持系統C、辦公自動化 D、人工智能2、計算機病毒是可以造成機器故障的( D )A、一種計算機設備 B、一種計算機芯片C、一種計算機部件 D、一種計算機程序3、防范病毒的有效手段,不正確的是( …

mysql查找大小寫_mysql查詢不區分大小寫

摘自:http://www.jb51.net/article/70884.htm當我們輸入不管大小寫都能查詢到數據,例如:輸入 aaa 或者aaA ,AAA都能查詢同樣的結果,說明查詢條件對大小寫不敏感。解決方案一:于是懷疑Mysql的問題。做個實驗&#xff1a…

poj 2492A Bug's Life(并查集)

1 /*2 目大意:輸入一個數t,表示測試組數。然后每組第一行兩個數字n,m,n表示有n只昆蟲,編號從1—n,m表示下面要輸入m行交配情況,每行兩個整數,表示這兩個編號的昆蟲為異性,要交配。3 要求統計交配…

mysql 有外鍵 怎么插入數據_外鍵約束的表怎么插入數據

有外鍵的情況應該先添加主表數據,再添加副表數據。如:有以下兩張表班級表:CLASSID NAME1 一班2 二班學生表:SID NAME CLASSID1 張三 12 李四 13 王五 2其中學生表中的CLASSID是班級表CLASSID的外鍵。現在要求在學生表中添加一條SI…

計算機在崗位上的應用,計算機崗位應用論文.doc

計算機崗位應用論文計算機崗位應用論文計算機崗位應用論文計算機崗位應用論文計算機崗位應用論文進入到新世紀以來,隨著我國國民經濟水平的提升,我國的計算機也得到了迅速的發展,計算機應用技術也已經廣泛的應用到了各個行業中,并且計算機應用技術對于促進這些行業的快速發展也…

poj1703Find them, Catch them(并查集以及路徑壓縮)

1 /*2 題目大意:有兩個不同的黑幫,開始的時候不清楚每個人是屬于哪個的!3 執行兩個操作4 A a, b回答a, b兩個人是否在同一幫派,或者不確定5 D a, b表示a, b兩個人不在同一個幫派6 7 思路:利用并查集將相同幫…

計算機課程word教學,Word教學方法及使用技巧

Word教學方法及使用技巧來源:用戶上傳作者: 李志愛【摘 要】Word是一款實用的、簡單的具有編輯、排版、處理各種表格與圖片等功能的文字處理軟件。本文就教學中會采用的一些Word的教學方法進行了簡單的介紹與分析,并以泰山版初中計算機的教學計劃為例,重…