python爬取英雄联盟所有皮肤价格表_用Python爬取英雄联盟(lol)全部皮肤

news/2024/10/18 0:23:02/

小三:“怎么了小二?一副无精打采的样子!”

小二:“唉!别提了,还不是最近又接触了一个叫英雄联盟的游戏,游戏中很多皮肤都需要花钱买,但是我钱不够呀...”

小三:“咋得,钱攒够了你还要买呀?还吃不吃饭了?!要我说,你干脆将英雄的炫彩皮肤都爬下来欣赏一下得了,饭钱还给你省下了。”

小二:“你说的也对,毕竟吃饭更重要,那我还是爬取皮肤欣赏一下算了。”

首先,我们打开英雄联盟官网主页,网址为:https://lol.qq.com/main.shtml,然后向下拉,可以看到英雄列表,如图所示:

接着随意选一个英雄点击进入看一下,如图所示:

再点击鼠标右键,接着选择检查,看一下皮肤的 URL,如图所示:

通过观察,可以发现英雄皮肤 URL 组成方式为:https://game.gtimg.cn/images/lol/act/img/skin/big + 英雄id + 皮肤id.jpg。

我们先看皮肤id,也就是看皮肤的个数,选择开发者工具的Network项,之后刷新一下页面,可以发现有一个17.js的请求,17实际就是英雄id,如图所示:

再选择Response项看一下相应数据,如图所示:

我们可以看到数据都显示在了一行,看着不太方便,我们将其格式化看一下,如图所示:

通过观察,可以发现获取指定英雄皮肤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_id + '.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小二 后台回复 201130 获取。


http://www.ppmy.cn/news/665508.html

相关文章

Laravel 多字段去重count计数

Laravel 多字段去重count计数 背景:需要统计数据列表总条数(字段1、字段2去重统计) table:policy_view,去重字段admin_id和permission 期望结果:count不含重复统计数据 解决思路: 语法:DISTI…

node事件机制详解

事件轮询机制 事件执行顺序: 引入一下两个概念: 宏任务(Macrotasks):就是参与了浏览器事件循环的异步任务 宏任务有:setTimeout,setInterval微任务(Microtasks): 直接…

氧os 下载地址

一加 国内版本 氧os 下载地址 系统下载和更新

亲测:一加手机3刷机OxygenOS详细教程

简介: OxygenOS是OnePlus3提供给国际市场的OS,内置了原生的Google Android applications. 而国内购买的OnePlus3自带的为H2OS,内置国内替代apps. 实际测试后发现从用户体验到界面的美观,再到省电等功能上,OxygenOS…

php自带的apche,OS的自带Apache+php配置

OS自带APache和php Apache:打开终端 重启apache:sudo /usr/sbin/apachectl restart 关闭apache:sudo /usr/sbin/apachectl stop 开启apache:sudo /usr/sbin/apachectl start 输入密码即可操作。 ————————————————…

OS进程同步与通信

信号量机制 信号量用于互斥 P(S) 临界区 V(S) ----- P(S) 临界区 V(S)生产者消费者: typedef int semaphore //信号量值设置为1就是互斥量 semaphore mutex 1; //同一时刻只有一个进程可以读写缓冲区 semaphore empty N; //“空”的数…

python标准库os的方法listdir_Python 标准库 os 中用来列出指定文件夹中的文件和子文件夹列表的方法是listdir()。_ERP省赛理论题训练答案_学小易找答案...

【单选题】油液的动力粘度的单位是( )。 【单选题】恩氏粘度.赛氏粘度和雷氏粘度属于( )。 【单选题】下面的( )又称为相对粘度。 【填空题】填写下述包装指示标志的含义: 【简答题】简述革兰氏染色机理。 【简答题】流通加工有哪些类型? 【判断题】过户是指对已经存入仓库的货…

【JZOJ4783】Osu

description analysis 正解二分 D P DP DP判定性问题 首先可以知道,可能的速度 (距离) 一定是某两个点之间的距离 O ( n 2 ) O(n^2) O(n2)预处理出两点之间的距离,然后排个序,可能的数最多只有 n ( n 1 ) 2 200…