【小白必看】使用Python批量下载英雄联盟皮肤图片的技术实现

简介: 【小白必看】使用Python批量下载英雄联盟皮肤图片的技术实现

前言

英雄联盟是一款备受喜爱的团队对战游戏,游戏中每位英雄都有各种精美的皮肤供玩家选择。本文将介绍一个使用Python编写的英雄联盟皮肤下载器,可以快速获取所有英雄的皮肤图片,让您更方便地欣赏和收藏这些皮肤。

运行效果截图

导入必要的模块和库

import requests     # pip install requests
import re
from time import sleep
import os

定义常量和变量

all_hero_url ='https://lol.qq.com/biz/hero/champion.js'
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36'}
  • all_hero_url:英雄URL地址
  • headers:请求头,用于模拟浏览器发送请求

获取所有英雄的名称

all_hero_js_resp = requests.get(all_hero_url,headers = headers)
all_hero_name = re.findall(r'"\d+?":"(\w+?)"',all_hero_js_resp.text)
  • 发送GET请求,获取英雄信息的JavaScript文件
  • 通过正则表达式提取所有英雄的名称,并存储在all_hero_name列表中

遍历每个英雄

for n in all_hero_name:
    sleep(1)
    hero_info_js_url =f'https://lol.qq.com/biz/hero/{n}.js'
    hero_info_js_resp = requests.get(hero_info_js_url,headers=headers)
    hero_info_js = hero_info_js_resp.text
    hero_ids = re.findall(r'"id":"(\d+?)"',hero_info_js)
    hero_names =  re.findall(r'"name":"(.+?)".+?"chrom',hero_info_js)
  • 遍历所有英雄的名称
  • 构造每个英雄的详细信息JavaScript文件URL
  • 发送GET请求,获取英雄详细信息的JavaScript文件
  • 通过正则表达式提取英雄ID和皮肤名称,并分别存储在hero_idshero_names列表中

遍历每个英雄的皮肤

for id,name in zip(hero_ids,hero_names):
    img_url =f'https://game.gtimg.cn/images/lol/act/img/skin/big{id}.jpg'
    # 发送请求
    img_resp = requests.get(img_url,headers=headers)
    name = name.encode().decode('unicode_escape')
    name = name.replace('/','')
    name = name.replace('\\','')
    print(f'正在下载{n}的:{name}皮肤')
    if not os.path.exists(f'./img/{n}'):
        os.mkdir(f'./img/{n}')
    with open(f'./img/{n}/{name}.jpg','wb') as f:
        f.write(img_resp.content)
    sleep(1)
  • 遍历每个皮肤的ID和名称
  • 构造每个皮肤的图片URL
  • 发送GET请求,获取皮肤图片内容
  • 对皮肤名称进行一些处理(编码转换、去除特殊字符)
  • 打印下载信息
  • 检查是否存在对应英雄的文件夹,如果不存在则创建
  • 将皮肤图片保存到文件夹中
  • 等待一秒,继续下载下一个皮肤

完整代码

import requests     # 导入requests模块,用于发送HTTP请求
import re           # 导入re模块,用于正则表达式匹配
from time import sleep   # 导入sleep函数,用于休眠
# 定义常量和变量
all_hero_url ='https://lol.qq.com/biz/hero/champion.js'   # 所有英雄URL地址
headers = {
   'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36'
}   # 请求头,用于模拟浏览器发送请求
# 获取所有英雄的名称
all_hero_js_resp = requests.get(all_hero_url,headers = headers)   # 发送GET请求,获取英雄信息的JavaScript文件
all_hero_name = re.findall(r'"\d+?":"(\w+?)"',all_hero_js_resp.text)   # 通过正则表达式提取所有英雄的名称,并存储在all_hero_name列表中
# 遍历每个英雄
for n in all_hero_name:
   sleep(1)   # 休眠1秒,避免请求频率过高被服务器拦截
   hero_info_js_url =f'https://lol.qq.com/biz/hero/{n}.js'   # 构造每个英雄的详细信息JavaScript文件URL
   hero_info_js_resp = requests.get(hero_info_js_url,headers=headers)   # 发送GET请求,获取英雄详细信息的JavaScript文件
   hero_info_js = hero_info_js_resp.text   # 获取JavaScript文件的内容
   hero_ids = re.findall(r'"id":"(\d+?)"',hero_info_js)   # 通过正则表达式提取英雄ID,并存储在hero_ids列表中
   hero_names =  re.findall(r'"name":"(.+?)".+?"chrom',hero_info_js)   # 通过正则表达式提取皮肤名称,并存储在hero_names列表中
# 遍历每个英雄的皮肤
for id,name in zip(hero_ids,hero_names):
   img_url =f'https://game.gtimg.cn/images/lol/act/img/skin/big{id}.jpg'   # 构造每个皮肤的图片URL
   img_resp = requests.get(img_url,headers=headers)   # 发送GET请求,获取皮肤图片内容
   name = name.encode().decode('unicode_escape')   # 对皮肤名称进行编码转换,解决中文字符显示问题
   name = name.replace('/','')   # 去除名称中的斜杠字符
   name = name.replace('\\','')   # 去除名称中的反斜杠字符
   print(f'正在下载{n}的:{name}皮肤')
   if not os.path.exists(f'./img/{n}'):
       os.mkdir(f'./img/{n}')   # 检查是否存在对应英雄的文件夹,如果不存在则创建
   with open(f'./img/{n}/{name}.jpg','wb') as f:   # 将皮肤图片保存到文件夹中
       f.write(img_resp.content)
   sleep(1)   # 休眠1秒,避免请求频率过高被服务器拦截
  • 第1行:导入requests模块,用于发送HTTP请求。
  • 第2行:导入re模块,用于正则表达式匹配。
  • 第3行:从time模块中导入sleep函数,用于程序休眠。
  • 第6行:定义常量all_hero_url,表示所有英雄URL地址。
  • 第7行:定义headers字典,包含用户代理信息,用于模拟浏览器发送请求。
  • 第10行:发送GET请求获取英雄信息的JavaScript文件,并将响应结果赋值给all_hero_js_resp
  • 第11行:使用正则表达式提取所有英雄的名称,并存储在all_hero_name列表中。
  • 第15行:使用for循环遍历每个英雄的名称。
  • 第16行:休眠1秒,以避免请求频率过高被服务器拦截。
  • 第17行:构造每个英雄的详细信息JavaScript文件URL。
  • 第18行:发送GET请求获取英雄详细信息的JavaScript文件,并将响应结果赋值给hero_info_js_resp
  • 第19行:获取JavaScript文件的内容。
  • 第20行:使用正则表达式提取英雄ID,并存储在hero_ids列表中。
  • 第21行:使用正则表达式提取皮肤名称,并存储在hero_names列表中。
  • 第25行:使用for循环遍历每个英雄的皮肤。
  • 第26行:构造每个皮肤的图片URL。
  • 第27行:发送GET请求获取皮肤图片内容,并将响应结果赋值给img_resp
  • 第28行:对皮肤名称进行编码转换,解决中文字符显示问题。
  • 第29行:去除名称中的斜杠字符。
  • 第30行:去除名称中的反斜杠字符。
  • 第31行:打印下载信息。
  • 第32-34行:检查是否存在对应英雄的文件夹,如果不存在则创建。
  • 第35行:将皮肤图片保存到对应的文件夹中。
  • 第36行:休眠1秒,以避免请求频率过高被服务器拦截。

代码使用Python的requests模块发送HTTP请求,使用re模块进行正则表达式匹配。通过解析游戏官网的数据接口,获取英雄和皮肤信息,并保存为本地文件。其中,sleep函数用于控制请求间隔,避免频繁请求导致被服务器拦截。代码还涉及文件和文件夹的操作,如创建文件夹、保存图片文件等。整体上,这段代码是一个简单的网络爬虫,用于批量下载英雄联盟的皮肤图片。

结束语

英雄联盟皮肤下载器是一个简单而实用的工具,让您能够快速获取所有英雄的皮肤图片。通过运行代码,您可以轻松地收集和保存英雄联盟中所有英雄的各种精美皮肤,无需手动下载。这个工具不仅适用于英雄联盟的玩家,也可以作为收藏者的便利工具,帮助您更好地欣赏和管理这些精美的皮肤设计。希望本文介绍的英雄联盟皮肤下载器对您有所帮助,让您在游戏中尽情享受每位英雄的独特魅力。

相关文章
|
2天前
|
JavaScript 前端开发 Android开发
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
34 13
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
1月前
|
API Python
【02】优雅草央央逆向技术篇之逆向接口协议篇-以小红书为例-python逆向小红书将用户名转换获得为uid-优雅草央千澈
【02】优雅草央央逆向技术篇之逆向接口协议篇-以小红书为例-python逆向小红书将用户名转换获得为uid-优雅草央千澈
95 1
|
4天前
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
23 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
|
4天前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
29 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
23天前
|
存储 缓存 Java
Python高性能编程:五种核心优化技术的原理与Python代码
Python在高性能应用场景中常因执行速度不及C、C++等编译型语言而受质疑,但通过合理利用标准库的优化特性,如`__slots__`机制、列表推导式、`@lru_cache`装饰器和生成器等,可以显著提升代码效率。本文详细介绍了这些实用的性能优化技术,帮助开发者在不牺牲代码质量的前提下提高程序性能。实验数据表明,这些优化方法能在内存使用和计算效率方面带来显著改进,适用于大规模数据处理、递归计算等场景。
58 5
Python高性能编程:五种核心优化技术的原理与Python代码
|
1月前
|
安全 数据挖掘 编译器
【01】优雅草央央逆向技术篇之逆向接口协议篇-如何用python逆向接口协议?python逆向接口协议的原理和步骤-优雅草央千澈
【01】优雅草央央逆向技术篇之逆向接口协议篇-如何用python逆向接口协议?python逆向接口协议的原理和步骤-优雅草央千澈
66 6
|
2月前
|
数据采集 存储 缓存
如何使用缓存技术提升Python爬虫效率
如何使用缓存技术提升Python爬虫效率
|
2月前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
116 2
|
3月前
|
数据可视化 数据处理 Python
Python编程中的数据可视化技术
在Python编程中,数据可视化是一项强大的工具,它能够将复杂的数据集转化为易于理解的图形。本文将介绍如何使用matplotlib和pandas这两个流行的Python库来实现数据可视化,并展示一些实用的代码示例。通过这些示例,读者将学会如何创建各种图表,包括折线图、柱状图和散点图等,以便更好地理解和呈现数据。
|
3月前
|
数据采集 API 定位技术
Python技术进阶:动态代理IP的跨境电商解决方案
Python技术进阶:动态代理IP的跨境电商解决方案

热门文章

最新文章

推荐镜像

更多