用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代码依赖的库的实现代码
Aug 09 Python
Windows下Anaconda的安装和简单使用方法
Jan 04 Python
基于Django用户认证系统详解
Feb 21 Python
python: 自动安装缺失库文件的方法
Oct 22 Python
解决pycharm运行出错,代码正确结果不显示的问题
Nov 30 Python
pandas计数 value_counts()的使用
Jun 24 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
Jul 26 Python
使用OpenCV实现仿射变换—旋转功能
Aug 29 Python
python requests抓取one推送文字和图片代码实例
Nov 04 Python
Pytorch之Variable的用法
Dec 31 Python
Django中template for如何使用方法
Jan 31 Python
如何将numpy二维数组中的np.nan值替换为指定的值
May 14 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(8) php 数组
2010/03/05 PHP
使用新浪微博API的OAuth认证发布微博实例
2015/03/27 PHP
laravel框架之数据库查出来的对象实现转化为数组
2019/10/23 PHP
this和执行上下文实现代码
2010/07/01 Javascript
基于jquery的返回顶部效果(兼容IE6)
2011/01/17 Javascript
禁用JavaScript控制台调试的方法
2014/03/07 Javascript
js实现3D图片逐张轮播幻灯片特效代码分享
2015/09/09 Javascript
jQuery+css实现的换页标签栏效果
2016/01/27 Javascript
json实现添加、遍历与删除属性的方法
2016/06/17 Javascript
vue 2.0组件与v-model详解
2017/03/27 Javascript
node.js中grunt和gulp的区别详解
2017/07/17 Javascript
基于vue.js路由参数的实例讲解——简单易懂
2017/09/07 Javascript
nuxt+axios解决前后端分离SSR的示例代码
2017/10/24 Javascript
详解自定义ajax支持跨域组件封装
2018/02/08 Javascript
nodejs简单读写excel内容的方法示例
2018/03/16 NodeJs
JavaScript常用事件介绍
2019/01/21 Javascript
详解Vue中watch对象内属性的方法
2019/02/01 Javascript
基于nodejs的微信JS-SDK简单应用实现
2019/05/21 NodeJs
vue 中url 链接左边的小图标更改问题
2019/12/30 Javascript
[03:20]次级联赛厮杀超职业 现超级兵对拆世纪大战
2014/10/30 DOTA
python中pass语句用法实例分析
2015/04/30 Python
[原创]windows下Anaconda的安装与配置正解(Anaconda入门教程)
2018/04/05 Python
Python实现的根据文件名查找数据文件功能示例
2018/05/02 Python
python中hasattr()、getattr()、setattr()函数的使用
2019/08/16 Python
pandas 缺失值与空值处理的实现方法
2019/10/12 Python
python实现FTP循环上传文件
2020/03/20 Python
Python类的继承super相关原理解析
2020/10/22 Python
如何写出好的Java代码
2014/04/25 面试题
毕业自荐书
2013/12/09 职场文书
船舶专业个人求职信范文
2014/01/02 职场文书
课前三分钟演讲稿
2014/04/24 职场文书
2015年元旦主持词开场白
2014/12/14 职场文书
承诺函范文
2015/01/21 职场文书
2015年大学生村官工作总结
2015/04/21 职场文书
跑吧孩子观后感
2015/06/10 职场文书
三下乡活动心得体会
2016/01/23 职场文书