用Python爬取英雄联盟的皮肤详细示例


Posted in Python onDecember 06, 2021

一、推理原理

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

lol.qq.com

用Python爬取英雄联盟的皮肤详细示例

2.从上面网址可以看到所有英雄都在,按下F12查看源代码,发现英雄及皮肤图片并没有直接给出,而是隐藏在JS文件中。

这时候需要点开Network,找到js窗口,刷新网页,就看到一个champion.js的选项,点击可以看到一个字典——里面就包含了所有英雄的名字(英文)以及对应的编号。

用Python爬取英雄联盟的皮肤详细示例

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

用Python爬取英雄联盟的皮肤详细示例

4.图中红色框就是我们需要的图片地址,经过分析知道:每一个英雄及皮肤的地址只有编号不一样

用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采集博客中上传的QQ截图文件
Jul 18 Python
python中的代码编码格式转换问题
Jun 10 Python
基于python3 类的属性、方法、封装、继承实例讲解
Sep 19 Python
Python使用matplotlib实现的图像读取、切割裁剪功能示例
Apr 28 Python
django允许外部访问的实例讲解
May 14 Python
Python中的集合介绍
Jan 28 Python
flask框架单元测试原理与用法实例分析
Jul 23 Python
Python调用scp向服务器上传文件示例
Dec 22 Python
python实现加密的方式总结
Jan 19 Python
Python中断多重循环的几种方式详解
Feb 10 Python
python框架flask入门之环境搭建及开启调试
Jun 07 Python
Python实现一个简单的递归下降分析器
Aug 01 Python
Python+腾讯云服务器实现每日自动健康打卡
Dec 06 #Python
python 管理系统实现mysql交互的示例代码
Python中super().__init__()测试以及理解
Dec 06 #Python
浅析Python中的随机采样和概率分布
Dec 06 #Python
python程序的组织结构详解
Python中异常处理用法
Nov 27 #Python
python中的3种定义类方法
Nov 27 #Python
You might like
php快速url重写更新版[需php 5.30以上]
2010/04/25 PHP
phpmyadmin打开很慢的解决方法
2014/04/21 PHP
PHP解析html类库simple_html_dom的转码bug
2014/05/22 PHP
PHP实现的博客欢迎提示功能(很特别哦)
2014/06/05 PHP
PHP文件读写操作相关函数总结
2014/11/18 PHP
php微信公众开发之获取周边酒店信息的方法
2014/12/22 PHP
WIFI万能钥匙密码查询接口实例
2015/09/28 PHP
如何使用微信公众平台开发模式实现多客服
2016/01/06 PHP
js中indexof的用法详细解析
2013/12/24 Javascript
SyntaxHighlighter 3.0.83使用笔记
2015/01/26 Javascript
js操作DOM--添加、删除节点的简单实例
2016/07/08 Javascript
jQuery Select下拉框操作小结(推荐)
2016/07/22 Javascript
通过JS获取Request.QueryString()参数的值实现方法
2016/09/27 Javascript
jQuery点击导航栏选中更换样式的实现代码
2017/01/23 Javascript
详解win7 cmd执行vue不是内部命令的解决方法
2017/07/27 Javascript
JavaScript中防止微信浏览器被整体拖动的方法
2017/08/25 Javascript
JS闭包原理与应用经典示例
2018/12/20 Javascript
vue中格式化时间过滤器代码实例
2019/04/17 Javascript
解决layer.prompt无效的问题
2019/09/24 Javascript
基于JavaScript实现单例模式
2019/10/30 Javascript
Vue实现兄弟组件间的联动效果
2020/01/21 Javascript
JavaScript运动原理基础知识详解
2020/04/02 Javascript
[03:08]Ti4观战指南上
2014/07/07 DOTA
[10:42]Team Liquid Vs Newbee
2018/06/07 DOTA
[02:10]DOTA2 TI10勇士令状玩法及不朽Ⅰ展示:焕新世界,如你所期
2020/05/29 DOTA
Python利用flask sqlalchemy实现分页效果
2020/08/02 Python
python 接口测试response返回数据对比的方法
2018/02/11 Python
Python读取Word(.docx)正文信息的方法
2018/03/15 Python
keras中模型训练class_weight,sample_weight区别说明
2020/05/23 Python
Python中的全局变量如何理解
2020/06/04 Python
绘画专业自荐信
2014/07/04 职场文书
领导干部保密承诺书
2014/08/30 职场文书
讲座开场白台词和结束语
2015/05/29 职场文书
学前班教学反思
2016/02/24 职场文书
PostgreSQL数据库去除重复数据和运算符的基本查询操作
2022/04/12 PostgreSQL
Win11查看设备管理器
2022/04/19 数码科技