用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 正则表达式 概述及常用字符
May 04 Python
Django中几种重定向方法
Apr 28 Python
Python for Informatics 第11章之正则表达式(四)
Apr 21 Python
Python用UUID库生成唯一ID的方法示例
Dec 15 Python
Python计算两个日期相差天数的方法示例
May 23 Python
Python探索之自定义实现线程池
Oct 27 Python
python执行使用shell命令方法分享
Nov 08 Python
python读取txt文件并取其某一列数据的示例
Feb 19 Python
Python中捕获键盘的方式详解
Mar 28 Python
python Pandas如何对数据集随机抽样
Jul 29 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
Jul 20 Python
解析python 类方法、对象方法、静态方法
Aug 15 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
Apache设置虚拟WEB
2006/10/09 PHP
使用php判断网页是否gzip压缩
2013/06/25 PHP
PHP 生成微信红包代码简单
2016/03/25 PHP
简单谈谈PHP中的trait
2017/02/25 PHP
PHP CURL使用详解
2019/03/21 PHP
实例说明js脚本语言和php脚本语言的区别
2019/04/04 PHP
初学prototype,发个JS接受URL参数的代码
2006/09/25 Javascript
Add a Formatted Table to a Word Document
2007/06/15 Javascript
JavaScript弹簧振子超简洁版 完全符合能量守恒,胡克定理
2009/10/25 Javascript
JavaScript内核之基本概念
2011/10/21 Javascript
jQuery中ajax的使用与缓存问题的解决方法
2013/12/19 Javascript
javascript解决IE6下hover问题的方法
2015/07/28 Javascript
详解handlebars+require基本使用方法
2016/12/21 Javascript
jacascript DOM节点——元素节点、属性节点、文本节点
2017/04/18 Javascript
JavaScript实现的滚动公告特效【基于jQuery】
2019/07/10 jQuery
Vue实现浏览器打印功能的代码
2020/04/17 Javascript
jQuery实现动态加载瀑布流
2020/09/01 jQuery
js canvas实现俄罗斯方块
2020/10/11 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
2021/02/26 Vue.js
[02:44]DOTA2英雄基础教程 克林克兹
2014/01/15 DOTA
python执行shell获取硬件参数写入mysql的方法
2014/12/29 Python
Python安装第三方库及常见问题处理方法汇总
2016/09/13 Python
Python实现对字符串的加密解密方法示例
2017/04/29 Python
Python3简单实例计算同花的概率代码
2017/12/06 Python
对Python字符串中的换行符和制表符介绍
2018/05/03 Python
Python实现将通信达.day文件读取为DataFrame
2018/12/22 Python
Python中的heapq模块源码详析
2019/01/08 Python
Python中求对数方法总结
2020/03/10 Python
详解如何在登录过期后跳出Ifram框架
2020/09/10 HTML / CSS
俄罗斯有趣和原创礼物网上商店:MagicMag
2019/08/01 全球购物
职业女性的职业规划
2014/03/04 职场文书
无犯罪记录证明
2014/09/19 职场文书
佛光寺导游词
2015/02/10 职场文书
南极大冒险观后感
2015/06/05 职场文书
党员学习中国梦心得体会
2016/01/05 职场文书
有趣的二维码:使用MyQR和qrcode来制作二维码
2021/05/10 Python