Python采集王者皮膚圖片實(shí)戰(zhàn)示例
數(shù)據(jù)采集
我們上一篇介紹了,如何采集王者最低戰(zhàn)力,本文就來給大家介紹如何采集王者皮膚,買不起皮膚,當(dāng)個(gè)桌面壁紙挺好的。下面,我和大家介紹如何獲取數(shù)據(jù)。
確定網(wǎng)址
我們在對王者英雄的主頁,進(jìn)行了分析,我們發(fā)現(xiàn),其網(wǎng)頁地址相似,就差一個(gè)數(shù)字。
https://pvp.qq.com/web201605/herodetail/{ename}.shtml
我們可以把它當(dāng)作為每個(gè)英雄的編號,我們可以從英雄列表獲取編號,不過,這里我們直接請求第三方接口數(shù)據(jù)。
獲取英雄編號
html_url ='https://www.sapi.run/hero/getHeroList.php'
datas = requests.get(html_url).json()['data']
for data in datas:
ename = data['ename']
cname = data['cname']
print(ename,cname)
這段代碼中,html_url 是一個(gè) URL,指向一個(gè) SAPI 的 Hero 列表頁面。requests.get(html_url).json()['data'] 返回一個(gè) JSON 對象,其中包含了 Hero 列表頁面的數(shù)據(jù)。ename 和 cname 是 JSON 對象中的兩個(gè)鍵值對,分別表示 Hero 的編號和名字。
在這段代碼中,我們使用了一個(gè) for 循環(huán)來遍歷 JSON 對象中的每一個(gè)鍵值對,并打印出它們的值。這樣就可以得到 Hero 列表頁面中所有 Hero 的編號和名字。

獲取皮膚名稱
我們拿到每一個(gè)英雄的編號之后,我們就可以訪問每一個(gè)英雄的主頁,我們在其主頁可以看到他們的英雄名稱和他們的英雄皮膚的地址。我們先獲取英雄皮膚的名稱。
herodetail_url = f'https://pvp.qq.com/web201605/herodetail/{ename}.shtml'
print(herodetail_url)
res = requests.get(herodetail_url,headers=headers)
res.encoding = 'gbk'
# print(res.text)
pfs = re.findall('data-imgname="(.*?)"',res.text)[0]
pfs=pfs.split('|')
print(pfs)
這段代碼中,herodetail_url 是一個(gè) URL,指向一個(gè) Hero 詳細(xì)頁面。requests.get(herodetail_url,headers=headers) 返回一個(gè) JSON 對象,其中包含了 Hero 詳細(xì)頁面的數(shù)據(jù)。res.encoding = 'gbk' 設(shè)置了 JSON 對象的編碼方式為 GBK。re.findall('data-imgname="(.*?)"',res.text)[0] 使用正則表達(dá)式匹配 Hero 詳細(xì)頁面中的英雄名稱,并返回第一個(gè)匹配項(xiàng)。pfs 是匹配項(xiàng)的值,它是一個(gè)包含英雄名稱的列表。

接下來,我們對字段進(jìn)行處理。
for pf in pfs:
pf = pf.split('&')[0]
# print(pf)
pf_list.append(pf)
print(len(pf_list))
print(pf_list)
我們得到了這樣的數(shù)據(jù)。['正義爆轟', '地獄巖魂', '無盡征程', '寅虎·御盾'],到了這里,我們皮膚名字就獲取下來了。
獲取皮膚
pages = len(pfs)
for page in range(1,pages+1):
pf_url = f'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{ename}/{ename}-bigskin-{page}.jpg'
pf_url_list.append(pf_url)
這段代碼中,我們首先計(jì)算出 Hero 詳細(xì)頁面中圖片的數(shù)量,然后使用 range 函數(shù)生成從 1 到 pages 的整數(shù)序列。接下來,我們使用一個(gè)循環(huán)來遍歷這個(gè)序列,并將每個(gè)圖片的 URL 添加到 pf_url_list 列表中。
最后,我們將 pf_url_list 列表中的所有 URL 連接起來,并將它們作為參數(shù)傳遞給 requests.get() 函數(shù),以獲取 Hero 詳細(xì)頁面的數(shù)據(jù)。
到這里,我們把所有皮膚的地址獲取了下來。
保存數(shù)據(jù)
for name,url in zip(pf_list,pf_url_list):
path = f'.//皮膚//{cname}//'
# print(path)
if not os.path.exists(path):
os.mkdir(path)
# print(cname,name,url)
pf_save = requests.get(url,headers=headers)
print(f"path + '{name}.jpg'")
with open(path + f'{name}.jpg', 'wb') as f:
f.write(pf_save.content)
這段代碼中,我們首先將 pf_list 和 pf_url_list 兩個(gè)列表進(jìn)行了 zip 操作,并將結(jié)果存儲在 pf_list 和 pf_url_list 兩個(gè)變量中。然后,我們使用 os.path.exists() 函數(shù)來檢查 path 目錄是否存在,如果不存在,則使用 os.mkdir() 函數(shù)創(chuàng)建該目錄。接下來,我們使用 requests.get() 函數(shù)來獲取 pf_url_list 列表中的每個(gè) URL,并將它們作為參數(shù)傳遞給 requests.get() 函數(shù),以獲取 pf_list 列表中的每個(gè) URL。
最后,我們使用 with open() 語句打開 path + '{name}.jpg' 文件,并將 pf_save.content 寫入該文件中。這樣就可以將 pf_list 和 pf_url_list 中的每個(gè) URL 保存到 path + '{name}.jpg' 文件中。
總結(jié)
這是一篇關(guān)于如何采集王者皮膚的文章,介紹了如何從英雄列表獲取編號,并使用正則表達(dá)式從網(wǎng)頁地址中提取英雄編號和名字。此外,還介紹了如何使用 requests.get() 函數(shù)從網(wǎng)頁中獲取數(shù)據(jù),以及如何將數(shù)據(jù)保存到文件中。
以上就是Python采集王者皮膚圖片實(shí)戰(zhàn)示例的詳細(xì)內(nèi)容,更多關(guān)于Python采集王者皮膚圖片的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
關(guān)于tf.reverse_sequence()簡述
今天小編就為大家分享一篇關(guān)于tf.reverse_sequence()簡述,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01
Python CategoricalDtype自定義排序?qū)崿F(xiàn)原理解析
這篇文章主要介紹了Python CategoricalDtype自定義排序?qū)崿F(xiàn)原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
Numpy截取指定范圍內(nèi)的數(shù)據(jù)方法
今天小編就為大家分享一篇Numpy截取指定范圍內(nèi)的數(shù)據(jù)方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11
python使用xlrd與xlwt對excel的讀寫和格式設(shè)定
最近在用python處理excel表的時(shí)候出現(xiàn)了一些問題,所以想著記錄下最后的實(shí)現(xiàn)方式和問題解決方法。方便自己或者大家在有需要的時(shí)候參考借鑒,下面這篇文章主要就介紹了python使用xlrd與xlwt對excel的讀寫和格式設(shè)定的相關(guān)資料,一起來學(xué)習(xí)學(xué)習(xí)吧。2017-01-01
pycharm 更改創(chuàng)建文件默認(rèn)路徑的操作
今天小編就為大家分享一篇pycharm 更改創(chuàng)建文件默認(rèn)路徑的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
使用Python玩轉(zhuǎn)串口(基于pySerial問題)
這篇文章主要介紹了使用Python玩轉(zhuǎn)串口(基于pySerial問題),具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
詳解Python+Pyecharts實(shí)現(xiàn)漏斗圖的繪制
漏斗圖是一個(gè)簡單的散點(diǎn)圖,反映研究在一定樣本量或精確性下單個(gè)研究的干預(yù)效應(yīng)估計(jì)值。本文將用Python Pyecharts實(shí)現(xiàn)漏斗圖的繪制,需要的可以參考一下2022-06-06

