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.软件end(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('数据保存在app同目录\n按随意键退出\n')
else:
print('错误输入\n程序即将退出')
time.sleep(2)
if __name__ == "__main__":
main()
《巫师3:狂猎》MOD管理解包文件,已经有玩家成功了解包了文件,大量MOD,奔涌而来,所以大家会需要这个文件。使用方法:1.解压缩2.在游戏目录下修改3.运行游戏
巫师3:狂猎手柄键位映射工具,使用后可以将键盘的操作映射到手柄上面,然后就可以用手柄操作这个游戏,同时还可以设置自己的键位,让你有一个更适合自己的键位。使用说明1.下载后解压缩2.打开设置键盘操作即可
《巫师3:狂猎》注册表工具,对GOG安装版,免安装版,RAS免安装版均可用,有了它就可以轻松搞定注册表,需要的下载使用。使用方法1、解压缩2、复制注册表工具到游戏目录下运行
侠盗飞车5联机延迟优化工具3.0,采用自动ping原理,并采集几个联机服务器的延迟状况,然后将最低延迟的服务器写入hosts,批处理完成,大家可放心下载使用。使用说明1.解压缩2.将插件复制到游戏目录
《侠盗飞车5》刷车工具,支持游戏的PC版,可以用这个刷出自己喜欢的车,各种隐藏车辆飞机都能弄出来,注意哦!线下测试可用,线上慎用!使用说明:1.解压缩2.放到GTA5的游戏目录下3.运行游戏
多玩盒子游戏大厅是多玩官方出品的页游游戏平台,盒子游戏大厅精选优质游戏,并有游戏辅助功能伴你轻松玩耍,还有独家特权,游戏礼包免费相送,是你最好的页游助手。网游玩累了就上多玩盒子游戏大厅玩玩好玩又轻松的
《跑跑卡丁车》游侠多功能辅助是一款纯辅助工具,以辅助玩家游戏为目的,实现更加便捷方便的玩游戏。使用说明:首先需要你自己设置按键设置好了后保存热键然后按下你设置的按键开启即可开启功能功能介绍:位置转移:
奥奇传说XK辅助是一款功能齐全的游戏辅助工具。奥奇传说是一款为儿童打造的休闲益智类游戏,玩家可以通过辅助来进行自动挂机操作,让你在工作的时候也可以自动玩游戏啦。奥奇传说XK辅助功能特点:1、一键恢复全
美食大战老鼠修改器火苗物品自动收集器鼠标右键就会自动收集,碰到卡包栏就会停止收集,鼠标要移到游戏窗口内再按热键启动。说明推荐大家用360浏览器,玩网页游戏很好的,可以弹出窗口,就像在一个独立的播放器里
CF九夏透视辅助是当前最新的一款辅助工具,可提供透视的功能,让整个游戏在你的掌握之中,而且软件稳定可靠,需要的小伙伴自行下载。使用说明进入游戏自动注入透视;须知任何辅助都有封号的几率,谨慎使用!支持X