教你用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 相关文章推荐
以Flask为例讲解Python的框架的使用方法
Apr 29 Python
Python首次安装后运行报错(0xc000007b)的解决方法
Oct 18 Python
深入探究Django中的Session与Cookie
Jul 30 Python
致Python初学者 Anaconda入门使用指南完整版
Apr 05 Python
​如何愉快地迁移到 Python 3
Apr 28 Python
Python 多个图同时在不同窗口显示的实现方法
Jul 07 Python
django foreignkey(外键)的实现
Jul 29 Python
python可视化篇之流式数据监控的实现
Aug 07 Python
tensorflow实现测试时读取任意指定的check point的网络参数
Jan 21 Python
python实现可下载音乐的音乐播放器
Feb 25 Python
浅谈python 中的 type(), dtype(), astype()的区别
Apr 09 Python
pytorch下的unsqueeze和squeeze的用法说明
Feb 06 Python
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
python基础入门之普通操作与函数(三)
python基础入门之字典和集合
Python OpenCV实现传统图片格式与base64转换
Jun 13 #Python
python实现A*寻路算法
Python实现生成bmp图像的方法
Jun 13 #Python
Python实现随机生成迷宫并自动寻路
You might like
php addslashes和mysql_real_escape_string
2010/01/24 PHP
php实现遍历目录并删除指定文件中指定内容
2015/01/21 PHP
yii2 modal弹窗之ActiveForm ajax表单异步验证
2016/06/13 PHP
PHP类型约束用法示例
2016/09/28 PHP
JS中Iframe之间传值及子页面与父页面应用
2013/03/11 Javascript
javascript 得到文件后缀名的思路及实现
2020/05/09 Javascript
js的延迟执行问题分析
2014/06/23 Javascript
AngularJs实现ng1.3+表单验证
2015/12/10 Javascript
javascript实现一个简单的弹出窗
2016/02/22 Javascript
详解nodejs中express搭建权限管理系统
2017/09/15 NodeJs
jquery获取transform里的值实现方法
2017/12/12 jQuery
深入浅析JSONAPI在PHP中的应用
2017/12/24 Javascript
浅谈Vue.use到底是什么鬼
2020/01/21 Javascript
jQuery实现查看图片功能
2020/12/01 jQuery
[01:05:36]VP vs TNC Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
python进程类subprocess的一些操作方法例子
2014/11/22 Python
简单介绍Python中的JSON模块
2015/04/08 Python
Python多维/嵌套字典数据无限遍历的实现
2016/11/04 Python
python使用 HTMLTestRunner.py生成测试报告
2017/10/20 Python
Python 输入一个数字判断成绩分数等级的方法
2018/11/15 Python
对numpy下的轴交换transpose和swapaxes的示例解读
2019/06/26 Python
python找出因数与质因数的方法
2019/07/25 Python
Python使用random模块生成随机数操作实例详解
2019/09/17 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
2020/04/20 Python
Python使用socketServer包搭建简易服务器过程详解
2020/06/12 Python
Numpy ndarray 多维数组对象的使用
2021/02/10 Python
js实现移动端H5页面手指滑动刻度尺功能
2017/11/16 HTML / CSS
html5 Web SQL Database 之事务处理函数transaction与executeSQL解析
2013/11/07 HTML / CSS
测试工程师岗位职责
2013/11/28 职场文书
儿子婚宴答谢词
2014/01/09 职场文书
澳大利亚商务邀请函
2014/01/17 职场文书
工程开工庆典邀请函
2014/02/01 职场文书
倡议书格式范文
2014/04/14 职场文书
新闻工作者先进事迹
2014/05/26 职场文书
整改报告怎么写
2014/11/06 职场文书
2019企业给员工的慰问信
2019/06/24 职场文书