教你用Python爬取英雄联盟皮肤原画
作者:yunyun云芸 时间:2022-11-05 06:03:30
一、推理原理
1.先去《英雄联盟》官网找到英雄及皮肤图片的网址:
http://lol.qq.com/data/info-heros.shtml
2.从上面网址可以看到所有英雄都在,按下F12查看源代码,发现英雄及皮肤图片并没有直接给出,而是隐藏在JS文件中。这时候需要点开Network,找到js窗口,刷新网页,就看到一个champion.js的选项,点击可以看到一个字典——里面就包含了所有英雄的名字(英文)以及对应的编号。
3.但是只有英雄的名字(英文)以及对应的编号并不能找到图片地址,于是回到网页,随便点开一个英雄,跳转页面后发现英雄及皮肤的图片都在,但要下载还需要找到原地址,这是鼠标右击选择“在新标签页中打开”,新的网页才是图片的原地址。
4.图中红色框就是我们需要的图片地址,经过分析知道:每一个英雄及皮肤的地址只有编号不一样(http://ossweb-img.qq.com/images/lol/web201310/skin/big266000.jpg),而该编号有6位,前3位表示英雄,后三位表示皮肤。刚才找到的js文件中恰好有英雄的编号,而皮肤的编码可以自己定义,反正每个英雄皮肤不超过20个,然后组合起来就可以了。
二、推理代码
第一步:获取js字典
def path_js(url_js):
res_js = requests.get(url_js, verify = False).content
html_js = res_js.decode("gbk")
pat_js = r'"keys":(.*?),"data"'
enc = re.compile(pat_js)
list_js = enc.findall(html_js)
dict_js = eval(list_js[0])
return dict_js
第二步:从 js字典中提取到key值生成url列表
def path_url(dict_js):
pic_list = []
for key in dict_js:
for i in range(20):
xuhao = str(i)
if len(xuhao) == 1:
num_houxu = "00" + xuhao
elif len(xuhao) == 2:
num_houxu = "0" + xuhao
numStr = key+num_houxu
url = r'http://ossweb-img.qq.com/images/lol/web201310/skin/big'+numStr+'.jpg'
pic_list.append(url)
print(pic_list)
return pic_list
第三步:从 js字典中提取到value值生成name列表
def name_pic(dict_js, path):
list_filePath = []
for name in dict_js.values():
for i in range(20):
file_path = path + name + str(i) + '.jpg'
list_filePath.append(file_path)
return list_filePath
第四步:下载并保存数据
def writing(url_list, list_filePath):
try:
for i in range(len(url_list)):
res = requests.get(url_list[i], verify = False).content
with open(list_filePath[i], "wb") as f:
f.write(res)
except Exception as e:
print("下载图片出错,%s" %(e))
return False
第五步:执行主程序
if __name__ == '__main__':
url_js = r'http://lol.qq.com/biz/hero/champion.js'
path = r'./data/' #图片存在的文件夹
dict_js = path_js(url_js)
url_list = path_url(dict_js)
list_filePath = name_pic(dict_js, path)
writing(url_list, list_filePath)
运行后会在控制台打印出每一张图片的网址:
在文件夹中可以看到图片已经下载好
如图:
来源:https://blog.csdn.net/yunyun889901/article/details/117778191
标签:Python,爬取,皮肤
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
php生成静态页面并实现预览功能
2023-11-15 08:37:11
![](https://img.aspxhome.com/file/2023/3/55693_0s.jpg)
position、z-index、top、right、bottom和left属性
2009-10-04 20:33:00
Webpack 实现 Node.js 代码热替换
2024-05-13 10:04:14
三谈Iframe自适应高度
2010-08-03 13:04:00
python中为main方法传参问题
2023-05-20 04:48:12
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
2021-08-11 11:43:55
关于Django框架的关系模型序列化和一对多关系中的序列化解析
2023-01-15 00:52:53
![](https://img.aspxhome.com/file/2023/1/79531_0s.jpg)
微信小程序报错: thirdScriptError的错误问题
2024-04-19 09:47:43
![](https://img.aspxhome.com/file/2023/2/136162_0s.jpg)
MySQL为数据表建立索引的原则详解
2024-01-13 14:46:18
详解在Python中以绝对路径或者相对路径导入文件的方法
2021-10-09 19:37:24
![](https://img.aspxhome.com/file/2023/5/103635_0s.png)
Python 照片人物背景替换的实现方法
2021-10-21 08:45:02
![](https://img.aspxhome.com/file/2023/1/100891_0s.png)
详解Python使用tensorflow入门指南
2023-08-22 13:37:09
Python使用scrapy采集数据时为每个请求随机分配user-agent的方法
2023-02-08 15:20:31
php 运算符与表达式详细介绍
2024-05-13 09:53:23
python 实现在Excel末尾增加新行
2023-11-26 09:27:52
Python多进程协作模拟实现流程
2021-07-01 17:52:38
教你pycharm运行Django第一个项目
2021-08-25 16:40:07
![](https://img.aspxhome.com/file/2023/9/80669_0s.png)
在win10和linux上分别安装Python虚拟环境的方法步骤
2023-09-06 18:40:01
Javascript的一种模块模式
2007-12-05 14:04:00
解决使用pip安装报错:Microsoft Visual C++ 14.0 is required.
2022-05-02 14:42:15
![](https://img.aspxhome.com/file/2023/1/71431_0s.jpg)