教你用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的Twisted框架实现webshell密码扫描器的教程
Apr 16 Python
深入讲解Python函数中参数的使用及默认参数的陷阱
Mar 13 Python
python逆向入门教程
Jan 15 Python
Windows下安装Django框架的方法简明教程
Mar 28 Python
Python输入二维数组方法
Apr 13 Python
python安装模块如何通过setup.py安装(超简单)
May 05 Python
django认证系统实现自定义权限管理的方法
Jul 16 Python
Django项目使用CircleCI的方法示例
Jul 14 Python
Python序列化与反序列化pickle用法实例
Nov 11 Python
python实现while循环打印星星的四种形状
Nov 23 Python
django修改models重建数据库的操作
Mar 31 Python
详解运行Python的神器Jupyter Notebook
Jun 03 Python
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
python基础入门之普通操作与函数(三)
python基础入门之字典和集合
Python OpenCV实现传统图片格式与base64转换
Jun 13 #Python
python实现A*寻路算法
Python实现生成bmp图像的方法
Jun 13 #Python
Python实现随机生成迷宫并自动寻路
You might like
解析htaccess伪静态的规则
2013/06/18 PHP
迁移PHP版本到PHP7
2015/02/06 PHP
PHP面向对象之领域模型+数据映射器实例(分析)
2017/06/21 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
PHP程序员学习使用Swoole的理由
2018/06/24 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
JS类定义原型方法的两种实现的区别评论很多
2007/09/12 Javascript
JSONP 跨域共享信息
2012/08/16 Javascript
关于javascript中的typeof和instanceof介绍
2012/12/04 Javascript
jQuery 获取URL的GET参数值的小例子
2013/04/18 Javascript
js控制浏览器全屏示例代码
2014/02/20 Javascript
JavaScript中奇葩的假值示例应用
2014/03/11 Javascript
JS访问SWF的函数用法实例
2015/07/01 Javascript
jQuery Easyui 验证两次密码输入是否相等
2016/05/13 Javascript
bootstrap响应式表格实例详解
2017/05/15 Javascript
Layui 设置select下拉框自动选中某项的方法
2018/08/14 Javascript
Electron + vue 打包桌面操作流程详解
2019/06/24 Javascript
Python创建文件和追加文件内容实例
2014/10/21 Python
用Python的Flask框架结合MySQL写一个内存监控程序
2015/11/07 Python
Python的for和break循环结构中使用else语句的技巧
2016/05/24 Python
对numpy数据写入文件的方法讲解
2018/07/09 Python
Python读取xlsx文件的实现方法
2019/07/04 Python
django认证系统 Authentication使用详解
2019/07/22 Python
pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
2020/01/13 Python
详解python itertools功能
2020/02/07 Python
Python2.6版本pip安装步骤解析
2020/08/17 Python
Python 求向量的余弦值操作
2021/03/04 Python
Luxplus瑞典:香水和美容护理折扣
2018/01/28 全球购物
幼师自荐信
2013/10/26 职场文书
感恩小明星事迹材料
2014/05/23 职场文书
2014年学校总务处工作总结
2014/12/08 职场文书
2015年度员工自我评价范文
2015/03/11 职场文书
建筑工程材料员岗位职责
2015/04/11 职场文书
监护人证明
2015/06/19 职场文书
幼儿园开学报名通知
2015/07/16 职场文书
SQL Server基本使用和简单的CRUD操作
2021/04/05 SQL Server