成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

Python實(shí)戰(zhàn)---王者榮耀皮膚爬蟲(chóng)

zorro / 2462人閱讀

摘要:文章目錄方法方法作為王者榮耀的老玩家,今天教大家如何用爬蟲(chóng)獲取王者榮耀皮膚本文將介紹兩種王者榮耀皮膚的爬取方法,一種比較簡(jiǎn)單的,一種復(fù)雜的方法供大家學(xué)習(xí)。

文章目錄


作為王者榮耀的老玩家,今天教大家如何用python爬蟲(chóng)獲取王者榮耀皮膚

本文將介紹兩種王者榮耀皮膚的爬取方法,一種比較簡(jiǎn)單的,一種復(fù)雜的方法供大家學(xué)習(xí)。
首先先進(jìn)去王者榮耀官方網(wǎng)站:王者榮耀
進(jìn)入開(kāi)發(fā)者工具找到英雄皮膚所在位置,圖中herolist.json就是我們需要找的英雄列表,包括英雄編號(hào)、英雄名稱(chēng)、影響類(lèi)型、皮膚等信息,復(fù)制url:http://pvp.qq.com/web201605/js/herolist.json路徑

方法1

見(jiàn)注釋

# 導(dǎo)入所需要的模塊import urllib.requestimport jsonimport os# 獲取響應(yīng)頭文件  response = urllib.request.urlopen("http://pvp.qq.com/web201605/js/herolist.json")# 讀取英雄列表,并存入hero_json中hero_json = json.loads(response.read())hero_num = len(hero_json)# 保存路徑save_dir = "Dheroskin//"# 檢查路勁是否存在,不存在則創(chuàng)建路徑if not os.path.exists(save_dir): os.mkdir(save_dir)  for i in range(hero_num):  # 獲取英雄皮膚列表  skin_names = hero_json[i]["skin_name"].split("|")  for cnt in range(len(skin_names)):   save_file_name = save_dir + str(hero_json[i]["ename"]) + "-" +hero_json[i]["cname"]+ "-" +skin_names[cnt] + ".jpg"   skin_url = "http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/"+str(hero_json[i]["ename"])+ "/" +str(hero_json[i]["ename"])+"-bigskin-" + str(cnt+1) +".jpg"   print(skin_url)# 檢查圖片文件是否存在,如果存在則跳過(guò)下載   if not os.path.exists(save_file_name):    urllib.request.urlretrieve(skin_url, save_file_name)

效果展示如下

方法2

見(jiàn)注釋

import requestsimport reimport jsonimport osimport time# 獲取當(dāng)前時(shí)間戳,用于計(jì)算爬蟲(chóng)爬取完畢消耗了多少時(shí)間now = lambda: time.time()# 請(qǐng)求頭headers = {    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36",    "Cookie": "pgv_pvid=120529985; pgv_pvi=8147644416; RK=iSx1Z7fSHW; ptcz=d094d0d03f513f6762a4c18a13ddae168782ec153f43b16b604723b27069d0a7; luin=o0894028891; lskey=000100008bc32936da345e2a5268733bf022b5be1613bd2600c10ad315c7559ff138e170f30e0dcd6a325a38; tvfe_boss_uuid=8f47030b9d8237f7; o_cookie=894028891; LW_sid=s116T01788a5f6T2U8I0j4F1K8; LW_uid=Z1q620M7a8E5G6b2m8p0R4U280; eas_sid=m1j6R057x88566P2Z8k074T2N7; eas_entry=https%3A%2F%2Fcn.bing.com%2F; pgv_si=s8425377792; PTTuserFirstTime=1607817600000; isHostDate=18609; isOsSysDate=18609; PTTosSysFirstTime=1607817600000; isOsDate=18609; PTTosFirstTime=1607817600000; pgv_info=ssid=s5339727114; ts_refer=cn.bing.com/; ts_uid=120529985; weekloop=0-0-0-51; ieg_ingame_userid=Qh3nEjEJwxHvg8utb4rT2AJKkM0fsWng; pvpqqcomrouteLine=index_herolist_herolist_herodetail_herodetail_herodetail_herodetail; ts_last=pvp.qq.com/web201605/herolist.shtml; PTTDate=1607856398243",    "referer": "https://pvp.qq.com/"}# 解析函數(shù),返回文本或者二進(jìn)制或者Nonedef parse_url(url, get_b=False):    try:        response = requests.get(url, headers=headers)        response.encoding = "gbk"        assert response.status_code == 200        if get_b == True:            return response.content        else:            return response.text    except:        print("status_code != 200(from parse_url)")        return None# 處理單個(gè)英雄def parse_hero_detail(id, name):    # 保存所有皮膚圖片的本地路徑    path = f"./英雄皮膚/{name}"    if not os.path.exists(path):        os.makedirs(path, exist_ok=True)    # 因?yàn)椴淮_定每個(gè)英雄有多少個(gè)皮膚,所以假設(shè)單個(gè)英雄一共請(qǐng)求10張皮膚,這樣就不會(huì)出現(xiàn)皮膚缺少的情況    for num in range(1, 11):        # 單個(gè)英雄皮膚圖片的url鏈接        api_url = f"https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{id}/{id}-bigskin-{num}.jpg"        # 如果返回None,則說(shuō)明狀態(tài)碼不是200,即沒(méi)有這個(gè)請(qǐng)求的皮膚        b_data = parse_url(api_url, get_b=True)        if b_data == None:            print(f"{name} 一共有{num - 1}個(gè)皮膚")            print("--------------------------------------------------")            # 沒(méi)有新的皮膚了,立即退出循環(huán)            break        img_path = f"{path}/demo{num}.jpg"        if not os.path.exists(img_path):            try:                download_img(img_path, b_data)            except:                return            print(f"{name}{num}張皮膚圖片 下載完畢")# 下載圖片def download_img(path, b_data):    with open(path, "wb") as f:        f.write(b_data)def main():    # 含有每個(gè)英雄對(duì)應(yīng)的id、英雄名稱(chēng)的url    api_url = "https://game.gtimg.cn/images/yxzj/web201706/js/heroid.js"    text = parse_url(api_url)    search_result = re.search("var module_exports = ({.*?})", text, re.S)    hero_info_str = search_result.group(1)    hero_info_str = re.sub(""", """, hero_info_str)    # 包含 所有英雄以及各自對(duì)應(yīng)的id 的字典    hero_info_dict = json.loads(hero_info_str)    for hero in hero_info_dict:        name, id = hero_info_dict[hero], hero        print(name, id)        parse_hero_detail(id, name)if __name__ == "__main__":    start = now()                       # 記錄起始時(shí)間    main()                              # 主函數(shù)    print(f"耗時(shí): {now() - start}")     # 計(jì)算爬蟲(chóng)執(zhí)行完畢消耗的時(shí)間

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/122430.html

相關(guān)文章

  • Python爬取"王者農(nóng)藥"英雄皮膚

    摘要:本篇就來(lái)教大家如何使用來(lái)爬取這些精美的英雄皮膚。有了英雄編號(hào)的對(duì)應(yīng)關(guān)系,再找尋下英雄皮膚的鏈接規(guī)律。將圖片保存下來(lái),并以英雄名稱(chēng)皮膚序號(hào)方式命名效果展示最終的爬取效果如下圖所示。 showImg(https://segmentfault.com/img/remote/1460000018627654); 0.引言 作為一款現(xiàn)象級(jí)游戲,王者榮耀,想必大家都玩過(guò)或聽(tīng)過(guò),游戲里中各式各樣的英...

    馬龍駒 評(píng)論0 收藏0
  • 如何實(shí)現(xiàn)一個(gè)基本的微信文章分類(lèi)器

    摘要:本文源地址,轉(zhuǎn)發(fā)請(qǐng)注明該地址或地址,謝謝微信公眾號(hào)發(fā)布的文章和一般門(mén)戶網(wǎng)站的新聞文本類(lèi)型有所不同,通常不能用現(xiàn)有的文本分類(lèi)器直接對(duì)這些文章進(jìn)行分類(lèi),不過(guò)文本分類(lèi)的原理是相通的,本文以微信公眾號(hào)文章為對(duì)象,介紹樸素貝葉斯分類(lèi)器的實(shí)現(xiàn)過(guò)程。 本文源地址:http://www.fullstackyang.com/...,轉(zhuǎn)發(fā)請(qǐng)注明該地址或segmentfault地址,謝謝! 微信公眾號(hào)發(fā)布的...

    dackel 評(píng)論0 收藏0
  • 首次公開(kāi),整理12年積累的博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時(shí)間永遠(yuǎn)都過(guò)得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過(guò)去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...

    Harriet666 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<