教你用Python爬取英雄联盟皮肤原画


Posted in Python onJune 13, 2021

一、推理原理

1.先去《英雄联盟》官网找到英雄及皮肤图片的网址:

http://lol.qq.com/data/info-heros.shtml

教你用Python爬取英雄联盟皮肤原画

2.从上面网址可以看到所有英雄都在,按下F12查看源代码,发现英雄及皮肤图片并没有直接给出,而是隐藏在JS文件中。这时候需要点开Network,找到js窗口,刷新网页,就看到一个champion.js的选项,点击可以看到一个字典——里面就包含了所有英雄的名字(英文)以及对应的编号。

教你用Python爬取英雄联盟皮肤原画

3.但是只有英雄的名字(英文)以及对应的编号并不能找到图片地址,于是回到网页,随便点开一个英雄,跳转页面后发现英雄及皮肤的图片都在,但要下载还需要找到原地址,这是鼠标右击选择“在新标签页中打开”,新的网页才是图片的原地址。

教你用Python爬取英雄联盟皮肤原画

4.图中红色框就是我们需要的图片地址,经过分析知道:每一个英雄及皮肤的地址只有编号不一样(http://ossweb-img.qq.com/images/lol/web201310/skin/big266000.jpg),而该编号有6位,前3位表示英雄,后三位表示皮肤。刚才找到的js文件中恰好有英雄的编号,而皮肤的编码可以自己定义,反正每个英雄皮肤不超过20个,然后组合起来就可以了。

教你用Python爬取英雄联盟皮肤原画

二、推理代码

第一步:获取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

教你用Python爬取英雄联盟皮肤原画

第四步:下载并保存数据

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)

运行后会在控制台打印出每一张图片的网址:

教你用Python爬取英雄联盟皮肤原画

在文件夹中可以看到图片已经下载好
如图:

教你用Python爬取英雄联盟皮肤原画

到此这篇关于教你用Python爬取英雄联盟皮肤原画的文章就介绍到这了,更多相关Python爬取皮肤内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python的collections模块中的OrderedDict有序字典
Jul 07 Python
Python从零开始创建区块链
Mar 06 Python
python机器学习库scikit-learn:SVR的基本应用
Jun 26 Python
Python Django 实现简单注册功能过程详解
Jul 29 Python
python实现的自动发送消息功能详解
Aug 15 Python
python 消除 futureWarning问题的解决
Dec 25 Python
基于MSELoss()与CrossEntropyLoss()的区别详解
Jan 02 Python
Python 将json序列化后的字符串转换成字典(推荐)
Jan 06 Python
python百行代码自制电脑端网速悬浮窗的实现
May 12 Python
将pycharm配置为matlab或者spyder的用法说明
Jun 08 Python
Python rabbitMQ如何实现生产消费者模式
Aug 24 Python
python获取命令行参数实例方法讲解
Nov 02 Python
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
python基础入门之普通操作与函数(三)
python基础入门之字典和集合
Python OpenCV实现传统图片格式与base64转换
Jun 13 #Python
python实现A*寻路算法
Python实现生成bmp图像的方法
Jun 13 #Python
Python实现随机生成迷宫并自动寻路
You might like
《斗罗大陆》六翼天使武魂最强,为什么老千家不是上三宗?
2020/03/02 国漫
使用sockets:从新闻组中获取文章(三)
2006/10/09 PHP
PHP获取MySql新增记录ID值的3种方法
2014/06/24 PHP
php常用表单验证类用法实例
2015/06/18 PHP
php 截取GBK文档某个位置开始的n个字符方法
2017/03/08 PHP
PHP实现正则表达式分组捕获操作示例
2018/02/03 PHP
PHP判断是否微信访问的方法示例
2019/03/27 PHP
Yii 框架入口脚本示例分析
2020/05/19 PHP
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
2010/05/31 Javascript
javascript学习笔记(四) Number 数字类型
2012/06/19 Javascript
JS原型、原型链深入理解
2016/02/27 Javascript
浅谈JS继承_借用构造函数 & 组合式继承
2016/08/16 Javascript
详解VUE2.X过滤器的使用方法
2018/01/11 Javascript
js中let和var定义变量的区别
2018/02/08 Javascript
详解Vue demo实现商品列表的展示
2019/05/07 Javascript
浅谈微信小程序列表埋点曝光指南
2019/10/15 Javascript
vue请求服务器数据后绑定不上的解决方法
2019/10/30 Javascript
封装一下vue中的axios示例代码详解
2020/02/16 Javascript
Vue中使用wangeditor富文本编辑的问题
2021/02/07 Vue.js
[02:13] 完美世界DOTA2联赛PWL DAY5集锦
2020/11/03 DOTA
python文件操作整理汇总
2014/10/21 Python
Python中Random和Math模块学习笔记
2015/05/18 Python
Python装饰器用法示例小结
2018/02/11 Python
tensorflow 实现自定义layer并添加到计算图中
2020/02/04 Python
Pandas中DataFrame交换列顺序的方法实现
2020/12/14 Python
导出HTML5 Canvas图片并上传服务器功能
2019/08/16 HTML / CSS
HTML5语义化元素你真的用对了吗
2019/08/22 HTML / CSS
威尔逊皮革:Wilsons Leather
2018/12/07 全球购物
梅西百货官网:Macy’s
2020/08/04 全球购物
优秀教师的感人事迹
2014/02/04 职场文书
文化活动实施方案
2014/03/28 职场文书
党的群众路线教育实践活动通讯稿
2014/09/10 职场文书
考研复习计划
2015/01/19 职场文书
如何有效防止sql注入的方法
2021/05/25 SQL Server
React forwardRef的使用方法及注意点
2021/06/13 Javascript
SQL基础的查询语句
2021/11/11 MySQL