用Python爬取LOL所有的英雄信息以及英雄皮膚的示例代碼
實(shí)現(xiàn)思路:分為兩部分,第一部分,獲取網(wǎng)頁(yè)上數(shù)據(jù)并使用xlwt生成excel(當(dāng)然你也可以選擇保存到數(shù)據(jù)庫(kù)),第二部分獲取網(wǎng)頁(yè)數(shù)據(jù)使用IO流將圖片保存到本地
一、爬取所有英雄屬性并生成excel
1.代碼
import json import requests import xlwt # 設(shè)置頭部信息,防止被檢測(cè)出是爬蟲 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36' } url = "https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js" response = requests.get(url=url, headers=headers).text loads = json.loads(response) dic = loads['hero'] # 創(chuàng)建一個(gè)workbook 設(shè)置編碼 workbook = xlwt.Workbook(encoding='utf-8') # 創(chuàng)建一個(gè)worksheet worksheet = workbook.add_sheet('LOL') try: for i in range(len(dic)): # 設(shè)置單元格寬度大小 worksheet.col(i).width = 4000 # 設(shè)置單元格高度大小 style = xlwt.easyxf('font:height 300') worksheet.row(i).set_style(style) # 第一行用于寫入表頭 if i == 0: worksheet.write(i, 0, '編號(hào)') worksheet.write(i, 1, '名稱') worksheet.write(i, 2, '英文名') worksheet.write(i, 3, '中文名') worksheet.write(i, 4, '角色') worksheet.write(i, 5, '物攻') worksheet.write(i, 6, '物防') worksheet.write(i, 7, '魔攻') worksheet.write(i, 8, '魔防') continue worksheet.write(i, 0, dic[i - 1]['heroId']) worksheet.write(i, 1, dic[i - 1]['name']) worksheet.write(i, 2, dic[i - 1]['alias']) worksheet.write(i, 3, dic[i - 1]['title']) roles_ = dic[i - 1]['roles'] roles = [] for data in roles_: if 'mage' == data: roles.append('法師') if 'tank' == data: roles.append('坦克') if 'fighter' == data: roles.append('戰(zhàn)士') if 'marksman' == data: roles.append('ADC') if 'assassin' == data: roles.append('刺客') if 'support' == data: roles.append('輔助') worksheet.write(i, 4, str(roles)) worksheet.write(i, 5, dic[i - 1]['attack']) worksheet.write(i, 6, dic[i - 1]['defense']) worksheet.write(i, 7, dic[i - 1]['magic']) worksheet.write(i, 8, dic[i - 1]['difficulty']) # 保存 workbook.save('C:\\Users\\Jonsson\\Desktop\\lol.xls') except Exception as e: print(e)
2.效果
二、爬取所有英雄皮膚并保存到本地
1.代碼
import json import os import requests import xlwt # 設(shè)置頭部信息,防止被檢測(cè)出是爬蟲 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36' } url = "https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js" # 請(qǐng)求英雄列表的url地址 response = requests.get(url=url, headers=headers).text loads = json.loads(response) dic = loads['hero'] for data in dic: id_ = data['heroId'] skinUrl = 'https://game.gtimg.cn/images/lol/act/img/js/hero/%s.js' % id_ # 請(qǐng)求每個(gè)英雄皮膚的url地址 skinResponse = requests.get(url=skinUrl, headers=headers).text json_loads = json.loads(skinResponse) hero_ = json_loads['hero'] save_path = './skin/%s-%s-%s' % (hero_["heroId"], hero_['name'], hero_['title']) # 文件夾不存在,則創(chuàng)建文件夾 folder = os.path.exists(save_path) if not folder: os.makedirs(save_path) skins_ = json_loads['skins'] for data in skins_: if data['chromas'] == '0': content = requests.get(url=data['mainImg'], headers=headers).content try: with open('%s/%s.jpg' % (save_path, data['name']), "wb") as f: print("正在下載英雄:%s 皮膚名稱:%s ..." % (hero_['name'], data['name'])) f.write(content) except Exception as e: print('下載失敗') print(e)
2.效果
到此這篇關(guān)于用Python爬取LOL所有的英雄信息以及英雄皮膚的示例代碼的文章就介紹到這了,更多相關(guān)Python爬取LOL所有英雄內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python中Matplotlib的點(diǎn)、線形狀、顏色以及繪制散點(diǎn)圖
與線型圖類似的是,散點(diǎn)圖也是一個(gè)個(gè)點(diǎn)集構(gòu)成的,下面這篇文章主要給大家介紹了關(guān)于Python中Matplotlib的點(diǎn)、線形狀、顏色以及繪制散點(diǎn)圖的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04Pytorch上下采樣函數(shù)之F.interpolate數(shù)組采樣操作詳解
最近用到了上采樣下采樣操作,pytorch中使用interpolate可以很輕松的完成,下面這篇文章主要給大家介紹了關(guān)于Pytorch上下采樣函數(shù)之F.interpolate數(shù)組采樣操作的相關(guān)資料,需要的朋友可以參考下2022-04-04Django模板導(dǎo)入母版繼承和自定義返回Html片段過程解析
這篇文章主要介紹了Django模板導(dǎo)入母版繼承和自定義返回Html片段過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09Python3二分查找?guī)旌瘮?shù)bisect(),bisect_left()和bisect_right()的區(qū)別
這篇文章主要介紹了Python3二分查找?guī)旌瘮?shù)bisect(),bisect_left()和bisect_right()的區(qū)別,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03python Pandas庫(kù)基礎(chǔ)分析之時(shí)間序列的處理詳解
這篇文章主要介紹了python Pandas庫(kù)基礎(chǔ)分析之時(shí)間序列的處理詳解,Pandas作為Python環(huán)境下的數(shù)據(jù)分析庫(kù),更是提供了強(qiáng)大的日期數(shù)據(jù)處理的功能,是處理時(shí)間序列的利器,需要的朋友可以參考下2019-07-07Python機(jī)器學(xué)習(xí)多層感知機(jī)原理解析
最簡(jiǎn)單的深度網(wǎng)絡(luò)稱為多層感知機(jī),它們由多層神經(jīng)元組成,每一層都與下面一層(從中接收輸入)和上面一層(反過來影響當(dāng)前層的神經(jīng)元)完全相連2021-10-10