用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安装使用命令行交互模块pexpect的基础教程
May 12 Python
PyQt5实现无边框窗口的标题拖动和窗口缩放
Apr 19 Python
Python标准库shutil用法实例详解
Aug 13 Python
django session完成状态保持的方法
Nov 27 Python
对django views中 request, response的常用操作详解
Jul 17 Python
基于Django静态资源部署404的解决方法
Jul 28 Python
python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据)
Aug 28 Python
python编程进阶之类和对象用法实例分析
Feb 21 Python
如何把python项目部署到linux服务器
Aug 26 Python
python实现简单贪吃蛇游戏
Sep 29 Python
python操作ini类型配置文件的实例教程
Oct 30 Python
python保存图片的四个常用方法
Feb 28 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 Static关键字实用方法
2010/06/04 PHP
浅析echo(),print(),print_r(),return之间的区别
2013/11/27 PHP
PHP开发框架Laravel数据库操作方法总结
2014/09/03 PHP
PHP中echo,print_r与var_dump区别分析
2014/09/29 PHP
PHP进程通信基础之信号量与共享内存通信
2017/02/19 PHP
PHP针对中英文混合字符串长度判断及截取方法示例
2017/03/31 PHP
popdiv
2006/07/14 Javascript
Javascript 八进制转义字符(8进制)
2011/04/08 Javascript
一个检测表单数据的JavaScript实例
2014/10/31 Javascript
javascript限制文本框输入值类型的方法
2015/05/07 Javascript
JQuery控制Radio选中方法分析
2015/05/29 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
2016/01/12 Javascript
js对象浅拷贝和深拷贝详解
2016/09/05 Javascript
ng2学习笔记之bootstrap中的component使用教程
2017/03/09 Javascript
微信小程序 选项卡的简单实例
2017/05/24 Javascript
JavaScript满天星导航栏实现方法
2018/03/08 Javascript
详解vue-cli中模拟数据的两种方法
2018/07/03 Javascript
Vue组件之高德地图地址选择功能的实例代码
2019/06/21 Javascript
一文秒懂JavaScript构造函数、实例、原型对象以及原型链
2020/08/25 Javascript
vue任意关系组件通信与跨组件监听状态vue-communication
2020/10/18 Javascript
Vue2.x-使用防抖以及节流的示例
2021/03/02 Vue.js
python 测试实现方法
2008/12/24 Python
Python实现字典的key和values的交换
2015/08/04 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
2017/12/14 Python
Django 过滤器汇总及自定义过滤器使用详解
2019/07/19 Python
Pytest测试框架基本使用方法详解
2020/11/25 Python
幼儿园开学寄语
2014/04/03 职场文书
诚信承诺书模板
2014/05/26 职场文书
餐饮服务食品安全责任书
2014/07/25 职场文书
会计试用期自我评价怎么写
2014/09/18 职场文书
授权委托书范本(单位)
2014/09/28 职场文书
2014乡党委副书记党建工作汇报材料
2014/11/02 职场文书
2014年幼儿园保育工作总结
2014/12/02 职场文书
商铺租房协议书范本
2014/12/04 职场文书
Javascript 解构赋值详情
2021/11/17 Javascript
td 内容自动换行 table表格td设置宽度后文字太多自动换行
2022/12/24 HTML / CSS