教你用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  pip安装lxml出错的问题解决办法
Feb 10 Python
使用Python爬了4400条淘宝商品数据,竟发现了这些“潜规则”
Mar 23 Python
新年快乐! python实现绚烂的烟花绽放效果
Jan 30 Python
Python实现的矩阵转置与矩阵相乘运算示例
Mar 26 Python
python使用Qt界面以及逻辑实现方法
Jul 10 Python
Django处理Ajax发送的Get请求代码详解
Jul 29 Python
Pandas数据离散化原理及实例解析
Nov 16 Python
Python多进程multiprocessing、进程池用法实例分析
Mar 24 Python
Python如何给你的程序做性能测试
Jul 29 Python
python调用有道智云API实现文件批量翻译
Oct 10 Python
Django正则URL匹配实现流程解析
Nov 13 Python
Python爬取你好李焕英豆瓣短评生成词云的示例代码
Feb 24 Python
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
python基础入门之普通操作与函数(三)
python基础入门之字典和集合
Python OpenCV实现传统图片格式与base64转换
Jun 13 #Python
python实现A*寻路算法
Python实现生成bmp图像的方法
Jun 13 #Python
Python实现随机生成迷宫并自动寻路
You might like
根德YB400的电路分析
2021/03/02 无线电
在普通HTTP上安全地传输密码
2007/07/21 PHP
深入PHP5中的魔术方法详解
2013/06/17 PHP
destoon实现会员商铺中指定会员或会员组投放广告的方法
2014/08/21 PHP
CodeIgniter钩子用法实例详解
2016/01/20 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
jquery $.ajax各个事件执行顺序
2010/10/15 Javascript
20个非常棒的 jQuery 幻灯片插件和教程分享
2011/08/23 Javascript
javascript随机将第一个dom中的图片添加到第二个div中示例
2013/10/08 Javascript
收集json解析的四种方法分享
2014/01/17 Javascript
jquery实现点击消失的代码
2014/03/03 Javascript
jQuery toggleClass应用实例(附效果图)
2014/04/06 Javascript
javascript转换日期字符串为Date日期对象的方法
2015/02/13 Javascript
seajs学习教程之基础篇
2016/10/20 Javascript
Angularjs验证用户输入的字符串是否为日期时间
2017/06/01 Javascript
Angular6中使用Swiper的方法示例
2018/07/09 Javascript
es5 类与es6中class的区别小结
2020/11/09 Javascript
python中常用的各种数据库操作模块和连接实例
2014/05/29 Python
python通过shutil实现快速文件复制的方法
2015/03/14 Python
基于Python的文件类型和字符串详解
2017/12/21 Python
Python subprocess模块功能与常见用法实例详解
2018/06/28 Python
python 求1-100之间的奇数或者偶数之和的实例
2019/06/11 Python
python中的逆序遍历实例
2019/12/25 Python
Web页面中八种创建多列等高(等高列布局)的实现技术
2012/12/24 HTML / CSS
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
2016/01/06 面试题
大三在校生电子商务求职信
2013/10/29 职场文书
出纳的岗位职责
2013/11/09 职场文书
数学国培研修感言
2014/02/13 职场文书
个人委托书
2014/07/31 职场文书
论群众路线学习笔记
2014/11/06 职场文书
音乐剧猫观后感
2015/06/04 职场文书
于丹论语心得观后感
2015/06/15 职场文书
2015少先队大队辅导员工作总结
2015/07/24 职场文书
会计入职心得体会
2016/01/22 职场文书
小学三年级语文教学反思
2016/03/03 职场文书
教你用Python+selenium搭建自动化测试环境
2021/06/18 Python