教你用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之使用Python查询更新数据库
Nov 25 Python
Python中使用md5sum检查目录中相同文件代码分享
Feb 02 Python
python实现神经网络感知器算法
Dec 20 Python
Python2.7下安装Scrapy框架步骤教程
Dec 22 Python
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
Apr 12 Python
Pycharm 操作Django Model的简单运用方法
May 23 Python
python实现n个数中选出m个数的方法
Nov 13 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
Jul 07 Python
Python3+Selenium+Chrome实现自动填写WPS表单
Feb 12 Python
Python中的sys.stdout.write实现打印刷新功能
Feb 21 Python
Python异常处理机制结构实例解析
Jul 23 Python
python pillow库的基础使用教程
Jan 13 Python
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
python基础入门之普通操作与函数(三)
python基础入门之字典和集合
Python OpenCV实现传统图片格式与base64转换
Jun 13 #Python
python实现A*寻路算法
Python实现生成bmp图像的方法
Jun 13 #Python
Python实现随机生成迷宫并自动寻路
You might like
PHP用mysql数据库存储session的代码
2010/03/05 PHP
面向对象的Javascript之二(接口实现介绍)
2012/01/27 Javascript
jQuery的显示和隐藏方法与css隐藏的样式对比
2013/10/18 Javascript
jquery中的过滤操作详细解析
2013/12/02 Javascript
Javascript 赋值机制详解
2014/11/23 Javascript
jQuery中height()方法用法实例
2014/12/24 Javascript
JS扩展方法实例分析
2015/04/15 Javascript
js获取表格的行数和列数的方法
2015/10/23 Javascript
实例代码详解javascript实现窗口抖动及qq窗口抖动
2016/01/04 Javascript
JS获取子窗口中返回的数据实现方法
2016/05/28 Javascript
微信小程序 图片绝对定位(背景图片)
2017/04/05 Javascript
webpack 4.0.0-beta.0版本新特性介绍
2018/02/10 Javascript
使用vue中的v-for遍历二维数组的方法
2018/03/07 Javascript
详解vue指令与$nextTick 操作DOM的不同之处
2018/08/02 Javascript
vue二级菜单导航点击选中事件的方法
2018/09/12 Javascript
浅谈vue.use()方法从源码到使用
2019/05/12 Javascript
基于vue的video播放器的实现示例
2021/02/19 Vue.js
[45:14]Optic vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
python集合类型用法分析
2015/04/08 Python
python使用Matplotlib画饼图
2018/09/25 Python
python将字符串以utf-8格式保存在txt文件中的方法
2018/10/30 Python
详解Python 定时框架 Apscheduler原理及安装过程
2019/06/14 Python
python求质数列表的例子
2019/11/24 Python
python GUI库图形界面开发之PyQt5动态加载QSS样式文件
2020/02/25 Python
PatPat阿根廷:妈妈们的购物平台
2019/05/30 全球购物
Farfetch澳大利亚官网:Farfetch Australia
2020/04/26 全球购物
为什么在使用动态 SQL 语句时必须为低层数据库对象授予权限
2012/12/13 面试题
介绍一下SQL Server里面的索引视图
2016/07/31 面试题
UML设计模式笔试题
2014/06/07 面试题
网上书店创业计划书
2014/01/12 职场文书
社区爱国卫生月活动总结
2014/06/30 职场文书
销售顾问工作计划书
2014/09/15 职场文书
领导欢迎词范文
2015/01/26 职场文书
学校捐书倡议书
2015/04/27 职场文书
简单总结SpringMVC拦截器的使用方法
2021/06/28 Java/Android
使用python求解迷宫问题的三种实现方法
2022/03/17 Python