用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脚本文件打包成可执行文件的方法
Jun 02 Python
使用django-crontab实现定时任务的示例
Feb 26 Python
python 爬虫 批量获取代理ip的实例代码
May 22 Python
Python3爬虫学习之MySQL数据库存储爬取的信息详解
Dec 12 Python
Python设计模式之职责链模式原理与用法实例分析
Jan 11 Python
Flask框架模板继承实现方法分析
Jul 31 Python
python标识符命名规范原理解析
Jan 10 Python
tensorflow-gpu安装的常见问题及解决方案
Jan 20 Python
python3中TQDM库安装及使用详解
Nov 18 Python
Python wordcloud库安装方法总结
Dec 31 Python
python爬虫之爬取笔趣阁小说
Apr 22 Python
Pyqt5将多个类组合在一个界面显示的完整示例
Sep 04 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
饭制《星际争霸》Mod:优化游戏机制 增加新单位
2017/07/02 星际争霸
php中DOMElement操作xml文档实例演示
2013/03/26 PHP
PHP Class&Object -- 解析PHP实现二叉树
2013/06/25 PHP
浅析THINKPHP的addAll支持的最大数据量
2015/02/03 PHP
PHP实现提取多维数组指定一列的方法总结
2019/12/04 PHP
php回调函数处理数组操作示例
2020/04/13 PHP
javascript的键盘控制事件说明
2008/04/15 Javascript
javascript读取xml实现javascript分页
2013/12/13 Javascript
JavaScript设计模式学习之“类式继承”
2015/03/12 Javascript
Bootstrap学习笔记之css样式设计(2)
2016/06/07 Javascript
JS 获取HTML标签内的子节点的方法
2016/09/21 Javascript
新手学习前端之js模仿淘宝主页网站
2016/10/31 Javascript
es6 字符串String的扩展(实例讲解)
2017/08/03 Javascript
JavaScript对象拷贝与赋值操作实例分析
2018/12/10 Javascript
详解JS预解析原理
2020/06/16 Javascript
[50:20]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第四局
2016/03/06 DOTA
python实现sublime3的less编译插件示例
2014/04/27 Python
python控制台英汉汉英电子词典
2020/04/23 Python
Python实现简单的获取图片爬虫功能示例
2017/07/12 Python
python 禁止函数修改列表的实现方法
2017/08/03 Python
Python中的Django基本命令实例详解
2018/07/15 Python
python 利用openpyxl读取Excel表格中指定的行或列教程
2021/02/06 Python
css3.0 图形构成实例练习二
2013/03/19 HTML / CSS
英国网上花店:Bunches
2016/11/29 全球购物
波兰在线香水店:Perfumy.pl
2019/08/12 全球购物
含精油的天然有机化妆品:Indemne
2019/08/27 全球购物
Order by的几种用法
2013/06/16 面试题
JavaScript实现前端网页版倒计时
2021/03/24 Javascript
硕士研究生个人求职信
2013/12/04 职场文书
课程设计心得体会
2013/12/28 职场文书
小学运动会广播稿200字(十二篇)
2014/01/14 职场文书
员工培训邀请函
2014/02/02 职场文书
财务主管岗位职责
2014/02/28 职场文书
大学生考试作弊检讨书
2014/09/21 职场文书
三好学生主要事迹材料
2015/11/03 职场文书
使用 DataAnt 监控 Apache APISIX的原理解析
2022/07/07 Servers