用Python获取英雄联盟皮肤原画?走过路过不要错过

什么是软件测试?零基础入门知识要点总结篇,5分钟带你快速了解 软件测试:技能要求比较广泛,但是专业度不高,无硬性代码基础 接口测试:soupUl, postman , jmeter 性能测试:loadrunner jmeter 自动化测试脚本:Python java unittest TestNg Charles fiddler appium 阅读详情

前言

作为喜欢读书的我,也是很喜欢打游戏的,之前看到有人爬王者荣耀的皮肤的,我可是王者荣耀的老玩家了,所以我把英雄联盟给爬了。

哈哈哈,没想到吧!

在本次的爬虫教程的过程中,我也会分享给大家一些简单实用的爬虫小技巧。

夜太美,爬虫就没那么危险

在爬取的时候,不要猛攻嘛~,啊啊。。人家服务器受不了啊。。。

你要学会停顿,克制一点,该 sleep 就 sleep。

趁着人家睡觉的时候,限制防范程度是最低的,能晚点就晚点爬,没有看过凌晨4点的洛杉矶,但是你还可以看到凌晨4点的爬虫呢。

这样你的IP地址才不会容易被封。

 

这里多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以进裙930900780领取。

善于利用他人的UA

如果你在看别人网站的robots.txt,你就会看到别人的声明,声明什么内容可以爬,什么内容不可以爬。但是,不要忽略了人家的声明,希望给什么搜索引擎爬,比如下面这个

 

看到没,这个别人定义的robots.txt值得注意的是User-Agent,那么当你在Python构造headers的时候,User-Agent就直接指定它们的robots定义的就好了啊,比如:百度的UA,Google的UA或者是搜狗的UA等等。你再去爬爬看,那叫一个友好啊。

爬虫过程

分析网页

通过开发者模式F12,你就会发现箭头所指的文件了,没有看到的话,刷新一下试试。

 

url0 = 'https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js'
try:
    response = requests.get(url0, headers=headers)
    response.raise_for_status()
    response.encoding = response.apparent_encoding  # 设置编码格式
    hreolist = response.json() # 将Response转换成json格式
    print(hreolist) # 打印出英雄列表
    print(len(hreolist['hero']))    # 打印英雄个数:151
except Exception as e:
    print(e)
复制代码

通过上面的代码,我成功的获取到了所有的英雄,以及英雄的总个数。

这里只是截取部分的打印信息

{'hero': [{'heroId': '1', 'name': '黑暗之女', 'alias': 'Annie', 'title': '安妮', 'roles': ['mage'], 'isWeekFree': '0', 'attack': '2', 'defense': '3', 'magic': '10', 'difficulty': '6', 'selectAudio': 'https://game.gtimg.cn/images/lol/act/img/vo/choose/1.ogg', 'banAudio': 'https://game.gtimg.cn/images/lol/act/img/vo/ban/1.ogg', 'isARAMweekfree': '0', 'ispermanentweekfree': '0', 'changeLabel': '无改动', 'goldPrice': '4800', 'couponPrice': '2000', 'camp': '', 'campId': '', 'keywords': '安妮,黑暗之女,火女,Annie,anni,heianzhinv,huonv,an,hazn,hn'}
复制代码

通过上面的json信息其实你会发现,英雄的列表信息是写在了hero下的。

获取每一位英雄的ID值

通过刚刚获取到的json值,你会发现,这些值里面有一个键:'heroId',那么这个'heroId'是用来做什么的呢?

这个我开始是不知道的,接下来我进入到了皮肤原画的网址,马上就霍然开朗了

https://lol.qq.com/data/info-defail.shtml?id=1 安妮
https://lol.qq.com/data/info-defail.shtml?id=2 奥拉夫
https://lol.qq.com/data/info-defail.shtml?id=876 莉莉娅
复制代码

通过上面的三个URL地址你就会发现heroId就是一个查询参数id。

但是在这里有一个坑,想必你也看到了,英雄的个数只有151个,id值却是876,。没错,在前100多个英雄都不会有什么问题很有规律,但是100多之后就出现问题了,每个英雄的id值跳转的很多,所以要进入每一位英雄的原画去爬图片就必须要正确拼接URL。每位英雄的ID值获取就成了必不可少的一步。

url = 'https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js'
hero_list_json = hreolist
hero_lists = hero_list_json['hero']     # 获取英雄列表
heros_id = list(map(lambda x: x['heroId'], hero_lists))     # 获取英雄编号
复制代码

分析原画网页

打开开发者模式,你会发现一个文件

 

在上图中可以看到skins有10个值,点开第一个可以看到loadingImg,而这个键对应的值就是皮肤原画的URL地址。

当然,作为老玩家们都知道,莉莉娅只有两种皮肤,但是skins里面为什么有10个值,依次点开第三个至第十个,会发现其余的loadingImg的值都是空的。

url_list = []   # 保存每一位英雄信息的url地址
for hero_id in heros_id:
       url = 'https://game.gtimg.cn/images/lol/act/img/js/hero/{}.js'.format(hero_id)
       # print(url)
       url_list.append(url)
复制代码
url1 = 'https://game.gtimg.cn/images/lol/act/img/js/hero/876.js'
try:
    response = requests.get(url1, headers=headers)
    response.raise_for_status()
    response.encoding = response.apparent_encoding  # 设置编码格式
    hreo_info = response.json()
    skins = hreo_info['skins']  # 获取英雄皮肤信息
    # 遍历每一个皮肤的loadingImg与皮肤名称
    for skin in skins:
        print(skin['loadingImg'])
        print(skin['name'])

except Exception as e:
    print(e)
复制代码

通过上面的两组代码的思路,那么已经可以实现一个英雄的皮肤原画的爬取了,需要获取所有的皮肤原画,无非就是多一个循环。

当你会爬第一个英雄的原画时,你还怕得不到其他英雄吗?

结语

爬取英雄联盟的英雄原画的思路已经分享给大家了。

请问亲爱的读者,你是否可以将王者荣耀的英雄皮肤全部拿下呢?

相信你绝对是没有问题的,加油!


最后多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以进裙930900780领取。

 

本文章素材来源于网络,如有侵权请联系删除。

从RADIUS服务器到AP:实战搭建一个小型WPA2-Enterprise测试环境(FreeRADIUS + 家用路由器) 本文详细介绍了如何从零搭建WPA2-Enterprise测试环境,使用FreeRADIUS服务器和家用路由器实现企业级WiFi认证。通过实战指南,包括证书生成、EAP-PEAP配置、OpenWrt路由器设置及故障排查,帮助网络工程师和爱好者掌握802.1X协议栈的实际应用。 阅读详情

相关推荐

Unity开发微信小游戏,使用Addressables管理游戏资源(本地进行远程测试)

快速构建Unity微信小游戏 使用Addressables管理游戏资源 使用小皮助手在本地进行远程资源加载测试

the_vnas的博客 6391

ipython如何退出_使用iPython / Spyder从Python退出的问题

以前有人问过这个问题,但我在这类相关问题上尝试过解决办法,但都无济于事。我在使用python的exit命令时遇到了问题,并且排除了使用普通python 3运行的代码的问题。当我使用ipython或Spyder的ipython控制台运行它时,问题就出现了。当我只使用一个简单的exit命令时,我会得到错误:NameError: name 'exit' is not defined我已经按照另一个链接的...

weixin_39882589的博客 1694

【UE5 C++开发指南】从零配置Visual Studio 2022开发环境

本文详细指导如何从零开始为UE5 C++开发配置Visual Studio 2022环境。文章强调了VS2022与UE5的深度兼容性,并逐步讲解了社区版下载、核心工作负载(如“使用C++的游戏开发”)与组件安装、界面优化、专属工具设置以及首个C++项目的创建与验证流程,帮助开发者高效搭建专业开发环境。

weixin_29016865的博客 393

UserWarning: To exit: use ‘exit‘, ‘quit‘, or Ctrl-D. warn(“To exit: use ‘exit‘, ‘quit‘, or Ctrl-D.

SystemExit: 2 SystemExit: 2 D:\Program\anaconda…: UserWarning: To exit: use ‘exit’, ‘quit’, or Ctrl-D. warn(“To exit: use ‘exit’, ‘quit’, or Ctrl-D.”, stacklevel=1) APP 中接收数据代码: parser = argparse.ArgumentParser() parser.add_argument('data_file', type = s

sunshinggg的博客 3961

Ultralytics YOLO模块自定义与替换实战技巧

本文详细介绍了在Ultralytics YOLO框架中进行模块自定义与替换的实战技巧。通过从零开始添加全新模块(如注意力模块)到进阶替换现有模块(如增强版卷积),并涵盖模块注册、YAML配置、模型融合及ONNX导出等关键步骤,帮助开发者深度定制YOLO模型,以应对复杂检测任务与部署需求。

numpy6sculptor的博客 930

psasp和matlab,PSASP与Matlab/SimPowerSystems联合仿真接口方法研究

[1]李亚楼,吴中习.Matlab模型接入PSASP暂态稳定计算模块的方法[J].电网技术,2008,32(19):31-36.Li Yalou,Wu Zhongxi.An Approach to Interface Matlab Model with PSASP Transient Stability Module [J].Power System Technology,2008,32(19):...

weixin_39636245的博客 1082

神经网络使用TensorFlow训练MNIST数据集,SystemExit异常的解决方案

使用Spyder IDE,出现如下错误: Step 1800: loss = 0.30 (0.002 sec) Step 1900: loss = 0.44 (0.003 sec) Training Data Eval: Num examples: 55000 Num correct: 49180 Precision @ 1: 0.8942 Validation Data Eval: ...

weixin_43729499的博客 585

Zipformer实战:5分钟快速搭建语音识别模型(附LibriSpeech测试结果)

本文提供了一份详细的Zipformer语音识别模型实战指南。通过清晰的步骤,指导读者在5分钟内完成从环境配置、LibriSpeech数据集准备到模型训练与测试的全过程。文章重点解析了关键配置参数,并分享了在LibriSpeech测试集上的性能结果,帮助开发者快速评估和应用这一高效的语音识别架构。

weixin_35578748的博客 162

软件测试是什么?

软件测试是什么?

cunrran的博客 7335

通达信双紫擒龙指标实战指南:从源码解析到精准安装

本文详细解析了通达信双紫擒龙指标的核心逻辑、源码获取与安全验证、安装流程及实战应用技巧。通过紫紫红黄四种颜色信号捕捉趋势转折点,结合MACD、布林通道和成交量加权算法,提升交易准确性。文章还提供了个性化设置、信号解读及常见问题解决方案,帮助投资者高效运用该指标。

weixin_29248611的博客 1052

基于STM32的智能婴儿床设计(蓝牙通信+摄像头监控)_315

本项目设计并实现了一款基于STM32微控制器的智能婴儿床系统,通过多种传感器和智能控制模块为家长提供更便捷和高效的婴儿照护解决方案。系统包括婴儿哭泣检测、湿度监测、空气质量检测、温度监控等多项功能,并通过蓝牙与手机APP进行数据传输和远程控制。婴儿床内置摇摇床和安抚音乐播放功能,能够在婴儿哭泣时自动启动摇摇床并播放安抚音乐。此外,系统还支持摄像头远程监控,让家长实时查看婴儿的状态。整个系统采用STM32F103RCT6作为核心控制单元,结合声音传感器、湿度传感器、MQ135空气质量传感器。

865

Tensorflow报错serWarning: To exit: use ‘exit‘, ‘quit‘, or Ctrl-D. warn(“To exit: use ‘exit‘, ‘quit‘,

在用Tensorflow处理图像识别的时候,疯狂报错。其中一个错误如下: UserWarning: To exit: use ‘exit’, ‘quit’, or Ctrl-D. warn(“To exit: use ‘exit’, ‘quit’, or Ctrl-D.”, stacklevel=1) 源代码: if __name__ == "__main__": tf.app.run() 可以用这行命令查看错误原因: %tb SystemExit

weixin_44387515的博客 1335

Unity大世界流式加载:工业级架构与优化秘籍

游戏大厂Unity大世界流式加载框架全景解析:从《原神》《和平精英》等标杆案例出发,深入剖析工业级流式加载的完整技术架构。文章系统介绍了大世界分区块管理、异步加载机制、资源优化策略、多平台适配方案,以及业务联动与团队协作流程。重点阐述了Addressable与AssetBundle应用、空间触发器设计、性能自适应等核心技术,并展望AI预测加载、云游戏等未来方向。全面展现了大厂如何通过流式加载技术实现无缝开放世界体验的技术路径与实践经验。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 607

什么是软件测试

使用人工和自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求,或是弄清预期结果与实际结果之间的差别”。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。软件缺陷,速称Bug,包含各种偏差、谬误或错误。

weixin_42661412的博客 5336

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

什么是软件测试?软件测试的目的和流程是什么?——入门软件测试

软件测试的基本概念,软件测试的目的,软件产生的过程,软件测试流程,软件质量模型,软件的生命周期,软件测试的生命周期,bug的生命周期

m0_62379634的博客 3210

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

什么是软件测试?

初步认识软件测试,了解软件测试软件测试的一般流程及原理。

个人学习笔记库,一篇一篇记录成长的足迹 9737

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

什么是软件测试?软件测试的目的、意义是什么? 软件测试的流程是什么?

什么是软件测试?软件测试的目的、意义是什么? 软件测试的流程是什么? 小伙伴儿们,大家好呀! 我最近是过的不太好呀,最近工作属实是有点累啊,我现在是拉拉胯了,今天这篇文章是我用命和大家分享的一篇有关软测基础知识的文章,如果各位亲哥哥,亲姐姐,感觉老弟儿我这篇文章写得还中,亲大伙儿削微给咱点个赞,谢谢。 之后也会写一篇文章,和大伙儿唠唠俺最近的痛苦旅程,其实不是特别累,但就是每天都感觉好像在倒时差,而且还有点费头发。。。 知识点一:什么是软件测试,软件测试的定义? 答: 1.软件测试(Software Tes

weixin_43950588的博客 5万+

什么是软件测试?5分钟带你快速了解!

软件测试是伴随着软件工程的重要组成部分,是软件质量保证的重要前提。软件测试是为了尽快尽早地发现在软件产品中所存在的各种软件缺陷而展开的贯穿整个软件开发生命周期,对软件产品进行验证和确认的活动过程。在开发大型系统的过程中,面对复杂的现实情况,软件生存周期的各个阶段都有可能产生差错。(一)软件测试的目标和原则1.软件测试目标以最少的时间和人力,尽可能多的发现程序中的错误和缺陷。测试还要证明,软件的功能和性能与需求说明相符合。2.软件测试原则测试既不要不充分,也不要过分。

主要分享测试的学习资源,帮助快速了解测试行业,帮助想转行、进阶、小白成长为高级测试工程师。 3237

什么是软件测试?测试新手看过来!

两个依据(需求、测试用例),两个方法(手工、自动),一个对比(预期结果和实际结果的对比)

m0_37449634的博客 238

什么是软件测试 ?软件测试的意义是什么?

基本介绍   一,软件测试定义   通过手工或者工具对“被测对象”进行测试操作,从而验证实际结果与预期结果之间是否存在差异。   (打一巴掌还一口,差异就是bug简称缺陷)   二,软件测试的作用   1,通过测试工作可以发现并修复软件当中存在的缺陷,从而提高用户对产品的使用信心。   2,测试可以记录软件运行过程中产生的一些数据,从而为决策提供数据支持。(12306购票,同一时间访问量没有考虑到,测试过程中设定1亿用户到10亿用户,公共网络某一时段)   3,测试可以降低同类型产品开发遇到问题的风险。(让

okcross0的博客 6647

Python爬虫实战——LOL英雄皮肤图片(多线程爬虫,带详细注释,皮肤全部爬完)

LOL图片爬取

weixin_54243306的博客 1690

软件测试原则

 软件测试经过几十年的发展,测试界提出了很多软件测试的基本原则,为测试管理人员和测试人员提供了测试指南。软件测试原则非常重要,测试人员应该在测试原则指导下进行测试活动。   软件测试的基本原则有助于测试人员进行高质量的测试,尽早尽可能多的发现缺陷,并负责跟踪和分析软件中的问题,对存在的问题和不足提出质疑和改进,从而持续改进测试过程。   原则1:测试显示缺陷的存在   测试可以显示缺陷...

weixin_30505043的博客 556

什么是软件测试,软件测试的目的?

软件测试: 用来确认一个程序的品质或性能是否符合开发之前所提出的一些要求 软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。 软件测试是为了发现错误而执行程序的过程 软件测试的目的: 1.确认软件的质量,其一方面是确认软件做了你所期望的事情,另一方面是确认软件以正确的方式来做了这个事件 2.提供信息,比如提供给开发人员或程序经理的反馈信

sysu_lluozh 2万+
上一篇: 史上最全Python快速入门教程,满满都是干货
下一篇: 零基础小白必看:教你在python画不同颜色的画布,简单好玩
python阿喵
博客等级 码龄6年 169粉丝 127原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值