
用Python获取英雄联盟所有皮肤图片
发布日期:2021-05-10 05:01:13
浏览次数:23
分类:精选文章
本文共 1753 字,大约阅读时间需要 5 分钟。
网页DOM结构分析与爬虫实现
网页的DOM结构分析是爬虫的首要任务。我主要关注的是英雄联盟官网中的英雄资料页面,通过检查发现,hero_list.js这个文件直接列出了所有英雄的ID和相关信息。打开这个文件可以发现其结构清晰地amphetamine每个英雄对应一个包含皮肤信息的JS对象。在实际操作中,我发现文件里的文件名并不是按照ID递增的顺序排列,而是以ID编码的方式,这一点一开始没有注意到,导致后续的抓取逻辑需要进行调整。
为了实现对皮肤图片的批量下载,我首先需要读取hero_list.js文件,提取出所有的heroId。然后,拼接出对应的皮肤图片文件路径,并逐个获取图片的下载链接。在实际代码中,我还对皮肤名字进行了一定的处理。由于系统不允许路径中包含携带""特殊字符,我需要将皮肤名字中的“/”字符进行替换,确保生成的文件路径是有效的。
最后,在实现了上述逻辑后,我还自动生成了一个存储所有英雄皮肤图片的文件夹,文件夹名采用英雄的中文姓名作为命名方式。目前的爬虫脚本主要包含以下步骤:文件路径拼接、文件下载、文件路径创建以及皮肤信息处理。
在项目完成后,我认识到自己的代码在很多方面还能有改进之处,比如路径处理的更优化、错误处理的更完善,以及尽可能减少重复请求等等。毕竟,这仅仅是自己作为一个初学者在lease项目实践的成果,依然有很多不足之处,需要在今后的学习和实践中不断优化和完善。
以下是完整的源码供参考:
import requestsimport jsonimport osimport urllib.request# 定义当前工作目录current_path = os.path.abspath(os.curdir)# HeroList.js文件路径hero_list_url = "https://game.gtimg.cn/images/lol/act/img/js/hero_list.js"# 获取英雄列表hero_list_response = requests.get(hero_list_url)hero_list = json.loads(hero_list_response.text)# 存储路径save_path = os.path.join(current_path, "所有皮肤图片")# 创建保存目录os.makedirs(save_path)for hero_data in hero_list: hero_id = hero_data["heroId"] hero_response = requests.get(f"https://game.gtimg.cn/images/lol/act/img/js/hero/{hero_id}.js") hero_info = json.loads(hero_response.text) hero_name = hero_info["hero"]["name"] skin_folder = os.path.join(save_path, hero_name) if not os.path.exists(skin_folder): os.makedirs(skin_folder) for skin in hero_info["skins"]: skin_name = str(skin["name"]).replace("/", "-") # 替换路径符号 skin_url = skin["mainImg"] if skin_url: file_name = os.path.join(skin_folder, os.path.basename(skin_url)) urllib.request.urlretrieve(skin_url, file_name)
下载地址:点击这里获取完整源码
本文已成功爬取完所有皮肤图片到本地文件夹中。欢迎在评论区留言交流,或采纳我的文章分享!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年05月05日 21时42分17秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
格式化Mac硬盘---DoYourData Super Eraser安全、快速
2019-03-14
MacOS磁盘分区出错的解决办法
2019-03-14
MacOS 应对系统无响应的方法
2019-03-14
使用KeyShot调整一个场景中的照明亮度
2019-03-14
Mac隐藏辅助功能|自定义苹果Mac显示器
2019-03-14
ActivityNotFoundException异常错误
2019-03-14
socket 乱码解决
2019-03-14
elasticsearch 不能root启动
2019-03-14
git远程仓库切换
2019-03-14
国芯网国产芯片精选月刊V20190801 国产芯片 芯片选型 芯片厂家
2019-03-14
华大芯片调试问题
2019-03-14
DCMTK:存储服务类用户(C-STORE操作)
2019-03-14
带照片捕捉功能的ESP32-CAM PIR运动检测器
2019-03-15
ARM Mbed RFID读取器
2019-03-15
如何使用SSH远程管理Linux服务器
2019-03-15
降级到旧版本macOS的3种方法
2019-03-15
学习Vue.js2.0(国外视频教程)
2019-03-15
在FPGA板上实现数字时钟的VHDL代码
2019-03-15
wxPython和PyOpenGL视频
2019-03-15