溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python怎么采集王者皮膚圖片

發(fā)布時(shí)間:2023-04-18 11:01:27 來(lái)源:億速云 閱讀:72 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要介紹了Python怎么采集王者皮膚圖片的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇Python怎么采集王者皮膚圖片文章都會(huì)有所收獲,下面我們一起來(lái)看看吧。

    確定網(wǎng)址

    我們?cè)趯?duì)王者英雄的主頁(yè),進(jìn)行了分析,我們發(fā)現(xiàn),其網(wǎng)頁(yè)地址相似,就差一個(gè)數(shù)字。

    https://pvp.qq.com/web201605/herodetail/{ename}.shtml

    我們可以把它當(dāng)作為每個(gè)英雄的編號(hào),我們可以從英雄列表獲取編號(hào),不過(guò),這里我們直接請(qǐng)求第三方接口數(shù)據(jù)。

    獲取英雄編號(hào)

    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 列表頁(yè)面。requests.get(html_url).json()['data'] 返回一個(gè) JSON 對(duì)象,其中包含了 Hero 列表頁(yè)面的數(shù)據(jù)。ename 和 cname 是 JSON 對(duì)象中的兩個(gè)鍵值對(duì),分別表示 Hero 的編號(hào)名字。

    在這段代碼中,我們使用了一個(gè) for 循環(huán)來(lái)遍歷 JSON 對(duì)象中的每一個(gè)鍵值對(duì),并打印出它們的值。這樣就可以得到 Hero 列表頁(yè)面中所有 Hero 的編號(hào)名字。

    Python怎么采集王者皮膚圖片

    獲取皮膚名稱

    我們拿到每一個(gè)英雄的編號(hào)之后,我們就可以訪問(wèn)每一個(gè)英雄的主頁(yè),我們?cè)谄渲黜?yè)可以看到他們的英雄名稱和他們的英雄皮膚的地址。我們先獲取英雄皮膚的名稱。

    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ì)頁(yè)面。requests.get(herodetail_url,headers=headers) 返回一個(gè) JSON 對(duì)象,其中包含了 Hero 詳細(xì)頁(yè)面的數(shù)據(jù)。res.encoding = 'gbk' 設(shè)置了 JSON 對(duì)象的編碼方式為 GBK。re.findall('data-imgname="(.*?)"',res.text)[0] 使用正則表達(dá)式匹配 Hero 詳細(xì)頁(yè)面中的英雄名稱,并返回第一個(gè)匹配項(xiàng)。pfs 是匹配項(xiàng)的值,它是一個(gè)包含英雄名稱的列表。

    Python怎么采集王者皮膚圖片

    接下來(lái),我們對(duì)字段進(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ù)。['正義爆轟', '地獄巖魂', '無(wú)盡征程', '寅虎·御盾'],到了這里,我們皮膚名字就獲取下來(lái)了。

    獲取皮膚

    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ì)頁(yè)面中圖片的數(shù)量,然后使用 range 函數(shù)生成從 1 到 pages 的整數(shù)序列。接下來(lái),我們使用一個(gè)循環(huán)來(lái)遍歷這個(gè)序列,并將每個(gè)圖片的 URL 添加到 pf_url_list 列表中。

    最后,我們將 pf_url_list 列表中的所有 URL 連接起來(lái),并將它們作為參數(shù)傳遞給 requests.get() 函數(shù),以獲取 Hero 詳細(xì)頁(yè)面的數(shù)據(jù)。

    到這里,我們把所有皮膚的地址獲取了下來(lái)。

    保存數(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é)果存儲(chǔ)在 pf_list 和 pf_url_list 兩個(gè)變量中。然后,我們使用 os.path.exists() 函數(shù)來(lái)檢查 path 目錄是否存在,如果不存在,則使用 os.mkdir() 函數(shù)創(chuàng)建該目錄。接下來(lái),我們使用 requests.get() 函數(shù)來(lái)獲取 pf_url_list 列表中的每個(gè) URL,并將它們作為參數(shù)傳遞給 requests.get() 函數(shù),以獲取 pf_list 列表中的每個(gè) URL。

    最后,我們使用 with open() 語(yǔ)句打開(kāi) path + '{name}.jpg' 文件,并將 pf_save.content 寫(xiě)入該文件中。這樣就可以將 pf_list 和 pf_url_list 中的每個(gè) URL 保存到 path + '{name}.jpg' 文件中。

    關(guān)于“Python怎么采集王者皮膚圖片”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“Python怎么采集王者皮膚圖片”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

    向AI問(wèn)一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI