LOL爬虫小工具是一款利用python指定爬取LOL高清壁纸、皮肤图片、头像图片、图标等下载工具,根据网上的爬虫教程结合爱好写了个爬虫,能爬取LOL国服官网资料库里的图片。研究了一下python,写出了这么个小东西。
爬取英雄联盟高清图片
运行结果

# coding=utf-8
import requests
import re
import json
import os
import urllib
import time
import threading
from queue import Queue
def getHttpStatusCode(url):
try:
request = requests.get(url)
httpStatusCode = request.status_code
return httpStatusCode
except requests.exceptions.HTTPError as e:
return e
def Get_Hero_Jsurl(queue):
url = 'https://lol.qq.com/biz/hero/champion.js'
response = requests.get(url).content.decode('gb2312')
regular = r'data":(.*?),"version":"'
dict_js = json.loads(re.findall(regular, response)[0])
for _item in dict_js:
EN = dict_js[_item]['id']
queue.put(EN.format(id=_item))
def Stitching_JS_links(name_en):
link = 'https://lol.qq.com/biz/hero/{}.js'.format(name_en)
return link
def Parsing_hero_JS(url):
response = requests.get(url).content.decode('gb2312')
regular = r'data":(.*?),"version":"'
js_data = json.loads(re.findall(regular, response)[0])
result = {
'name_CN': js_data['name'] + ' ' + js_data['title'],
'name_EN': js_data['id'],
'skins': js_data['skins'],
'skill': js_data['spells'],
'passive': js_data['passive'],
}
return result
def Download_hero_resources(detail_url_list: Queue, id):
while len(detail_url_list.queue):
hero_name = detail_url_list.get()
Metadata = Parsing_hero_JS(Stitching_JS_links(hero_name))
path = os.getcwd() + '\\英雄相关\\' + Metadata['name_CN']
if not os.path.exists(path + '\\头像'):
os.makedirs(path + '\\头像')
if not os.path.exists(path + '\\皮肤'):
os.makedirs(path + '\\皮肤')
if not os.path.exists(path + '\\技能'):
os.makedirs(path + '\\技能')
# 下载皮肤和头像图 [img]https://game.gtimg.cn/images/lol/act/img/skin/big1000.jpg[/img]
for item_skin in Metadata['skins']:
url_0 = 'https://game.gtimg.cn/images/lol/act/img/skin/big{}.jpg'.format(
item_skin['id'])
url_1 = 'https://game.gtimg.cn/images/lol/act/img/skin/small{}.jpg'.format(
item_skin['id'])
urllib.request.urlretrieve(
url_0,
path + '\\皮肤\\' + item_skin['name'].replace('/', '') + '.jpg')
urllib.request.urlretrieve(
url_1,
path + '\\头像\\' + item_skin['name'].replace('/', '') + '.jpg')
pass
# 下载技能图 [img]https://game.gtimg.cn/images/lol/act/img/spell/AnnieR.png[/img]
for item_skill in Metadata['skill']:
url_3 = 'https://game.gtimg.cn/images/lol/act/img/spell/{}.png'.format(
item_skill['id'])
save_path = path + '\\技能\\' + item_skill[
'name'] + '_' + item_skill['id'].replace(hero_name,
'') + '.png'
if (getHttpStatusCode(url_3) != 404):
urllib.request.urlretrieve(url_3, save_path.replace('/', '-'))
url_3 = 'https://game.gtimg.cn/images/lol/act/img/passive/{}'.format(
Metadata['passive']['image']['full'])
if (getHttpStatusCode(url_3) == 404):
url_3 = 'https://game.gtimg.cn/images/lol/act/img/spell/{}'.format(
Metadata['passive']['image']['full'])
save_path = path + '\\技能\\' + Metadata['passive'][
'name'] + '_P' + '.png'
# test = getHttpStatusCode(url_3)
urllib.request.urlretrieve(url_3, save_path.replace('/', '-'))
def Features_1():
detail_url_queue = Queue(maxsize=1000)
thread = threading.Thread(target=Get_Hero_Jsurl, args=(detail_url_queue, ))
html_thread = []
thread.start()
for i in range(20):
thread2 = threading.Thread(target=Download_hero_resources,
args=(detail_url_queue, i))
html_thread.append(thread2)
start_time = time.time()
print('将在2秒后启动多线程下载')
time.sleep(2)
for i in range(20):
html_thread[i].start()
sum_num = len(detail_url_queue.queue)
thread.join()
for i in range(20):
html_thread[i].join()
time_ = time.time() - start_time
print('共下载了{}位英雄资源'.format(sum_num))
print("用时: {}分{}秒".format(int(time_ // 60), int(time_ % 60) + 1))
def Features_2():
hero_js = 'https://lol.qq.com/biz/hero/item.js'
response = requests.get(hero_js).content.decode('gb2312')
正则 = r'data":(.*?),"tree'
list_js = re.findall(正则, response)
dict_js = json.loads(list_js[0])
Item_name = {}
Item_url = {}
if not os.path.exists(os.getcwd() + '\\装备'):
os.makedirs(os.getcwd() + '\\装备')
for i in dict_js:
Item_name[i] = dict_js[i]['name']
url0 = 'https://game.gtimg.cn/images/lol/act/img/item/'
url1 = '.png'
Item_url[i] = url0 + i + url1
p = 0
for i in Item_url:
urllib.request.urlretrieve(
Item_url[i],
os.getcwd() + '\\装备\\' + Item_name[i] + '.png')
p += 1
_JD = (p / len(Item_url)) * 100
print('已完成 ', end='')
print('%.2lf' % _JD, end=' %\n')
def main():
print('LOL爬虫小工具 作者:艾斯托维亚')
print('———————————————————————————————————————')
print(' 1 | 从官网下载最新英雄头像、皮肤原画、技能图标')
print(' 2 | 从官网下载最新最新装备图 ')
print('———————————————————————————————————————')
n = input('请输入数字以选择功能\n')
n = int(n)
if n > 0 and n < 3:
swicth = {
1: Features_1,
2: Features_2,
}
swicth[n]()
input('数据保存在软件同目录\n按任意键退出\n')
else:
print('错误输入\n程序即将退出')
time.sleep(2)
if __name__ == "__main__":
main()
开发者其他应用

逃跑吧少年正版最新版837.3M182777人在玩逃跑吧少年下载安装正版最新版是一款十分趣味的不对称对抗游戏,玩家将在逃跑吧少年正版最新版游戏中你可以不断提升自己的等级与技巧,在游戏中可以扮演逃生者或追捕者
下载
英雄联盟手游官方版1.82G2552399人在玩英雄联盟手游官方正版下载,LOL手游里面会逐渐的发布所有LOL里面的人物,这也就决定了玩家可以不断地开发配套装备玩法和对线玩法。英雄联盟手游官方版让你
下载
新射雕群侠传之铁血丹心最新版986.4M28人在玩新射雕群侠传之铁血丹心最新版是一款经典武侠类角色扮演手机游戏,新射雕群侠传之铁血丹心最新版集策略、养成、角色扮演、社交等多种元素为一体,使游戏更具趣味
下载
战神遗迹手游872.2M226458人在玩战神遗迹手游是一款非常好玩的大型欧美魔幻风格的角色扮演英雄战斗游戏,史诗魔幻画面呈现,经典的游戏职业可以选择,多人实时组队,副本PK,史诗级装备轻松打造
下载
梦幻新诛仙九游版1.90G117880人在玩梦幻新诛仙九游版是一款由完美世界最新推出的非常好玩的角色扮演修仙战斗游戏,3D高品质画面呈现,构建全新的诛仙世界,梦幻新诛仙九游版丰富的英雄角色可以选择,全新副本,自由组队挂机
下载
逃跑吧少年2022官方正版837.3M87308人在玩逃跑吧少年2022官方正版是一款对抗策略类手游,大家可以在逃跑吧少年正版游戏中扮演两个不同的阵容,进行逃生追捕大作战,不同的职业角色会有其独特的技能
下载
大话白蛇手游403.7M244441人在玩大话白蛇手游是一款国产仙侠MMORPG手游。带给玩家一场浪漫唯美的仙侠人妖之恋。另有特色妖兽系统全面开启,打造千人千面的游戏玩法体验
下载
完美世界手游腾讯版1.36G564人在玩完美世界手游腾讯版是一款由腾讯最新推出的根据同名端游移植而成的角色扮演修仙战斗手游,3Dunity引擎画面打造,场景非常精致,游戏完美复刻端游世界观
下载
龙族幻想官方版1.63G45508人在玩龙族幻想官方版是一款腾讯出品的大型魔幻题材类角色扮演手机游戏,龙族幻想官方版采用顶尖的UE4引擎打造超清游戏世界。精致的游戏场景和百变人物造型给玩家优质视觉体验
下载
渣渣辉传奇官方版176M55人在玩渣渣辉传奇是一款热门手热,我是古天乐,我是渣渣辉,贪玩蓝月让三位港星代言,但由于发音问题被网络中各种恶搞,而渣渣辉传奇就是其中一款,玩法简单,进入游戏
下载