今天就和大家聊聊如何用Python抓取英雄联盟(lol)的所有皮肤,可能很多人都不太懂。为了让大家更好的了解,边肖为大家总结了以下内容,希望大家能从这篇文章中有所收获。
小三:“怎么了,小二?一副无精打采的样子!”
小二:“唉!别提了。我最近接触到一款游戏,叫做英雄联盟。游戏中很多皮肤需要用钱买,但是我没有足够的钱……”
小三:“怎么,攒够钱还要买?你吃过了吗?我想说,你干脆爬下英雄的彩皮好好享受,省下吃饭的钱。”
小二:“你说得对,毕竟吃饭更重要,我还是扒着皮享受吧。”
首先我们打开英雄联盟官网的首页,网站是:https://lol.qq.com/main.shtml,然后下拉看到英雄榜,如图:
然后随意选择一个英雄,点击看一下,如图:
再次点击鼠标右键,然后选择检查,查看皮肤的网址,如图:
通过观察可以发现,英雄皮肤网址的组成是:https://game.gtimg.cn/images/lol/act/img/skin/big英雄id皮肤id.jpg。
我们先看皮肤id,也就是皮肤的数量,选择开发者工具的Network项,然后刷新页面,可以发现有一个对17.js的请求,其实就是英雄id,如图:
选择响应项查看相应的数据,如图所示:
我们可以看到数据显示在一行,不方便看。让我们将其格式化并查看一下,如图所示:
通过观察可以发现,获取指定英雄皮肤id的URL是https://game.gtimg.cn/images/lol/act/img/js/hero/英雄id.js获取皮肤id和下载皮肤图片的代码如下:
hero _ skin _ URL=' https://game . gtimg.cn/images/lol/act/img/js/hero/' hero _ IDN bsp
;+ '.js'
# 通过 url 获取英雄的皮肤数量
skin_text = requests.get(hero_skin_url).text
skin_json = json.loads(skin_text)
skin_list = skin_json['skins']
# 获取皮肤名
hero_skins.clear()
for skin in skin_list:
hero_skins.append(skin['name'].replace('/', '').replace('\\', '').replace(' ', ''))
# 皮肤数量
skins_num = len(hero_skins)
s = ''
for i in tqdm(range(skins_num), desc='【' + hero_name + '】皮肤下载'):
if len(str(i)) == 1:
s = '00' + str(i)
elif len(str(i)) == 2:
s = '0' + str(i)
elif len(str(i)) == 3:
pass
try:
# 拼接指定皮肤的 url
skin_url = 'https://game.gtimg.cn/images/lol/act/img/skin/big' + hero_id + '' + s + '.jpg'
img = requests.get(skin_url)
except:
# 没有炫彩皮肤 url 则跳过
continue
# 保存皮肤图片
if img.status_code == 200:
with open(hero_skins[i] + '.jpg', 'wb') as f:
f.write(img.content)
现在就差英雄id
参数的获取了,我们接着看如何获取全部的英雄id
,返回到 https://lol.qq.com/main.shtml
页面,打开开发者工具并选择Network
,然后刷新页面,我们可以观察到有一个hero_list.js
的请求,如图所示:
与皮肤id
的获取基本类似,通过这个请求就可以获取到全部英雄id
,代码实现如下:
url = 'https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js'
hero_text = requests.get(url).text
# 转为 json 格式
hero_json = json.loads(hero_text)['hero']
path = os.getcwd()
# 获取当前文件夹路径
workspace = os.getcwd()
# 皮肤路径
skin_path = "{}\\{}".format(workspace, 'skins')
# 遍历列表
for hero in hero_json:
# 将每一个英雄的 id、name 放入一个字典中
hero_dict = {'id': hero['heroId'], 'name': hero['name']}
# 放入列表
heros.append(hero_dict)
我们可以看出:代码中除了英雄id
,还获取了英雄name
,并将每一个英雄的id
、name
放在了一个字典中,又将所有英雄对应的字典放在了列表中。
最后,我们看一下下载效果:
看完上述内容,你们对如何用Python爬取英雄联盟(lol)全部皮肤有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/49730.html