用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导入oracle数据的方法
Jul 10 Python
python中的lambda表达式用法详解
Jun 22 Python
用于业余项目的8个优秀Python库
Sep 21 Python
Opencv+Python 色彩通道拆分及合并的示例
Dec 08 Python
Python中的random.uniform()函数教程与实例解析
Mar 02 Python
django框架model orM使用字典作为参数,保存数据的方法分析
Jun 24 Python
Python中list的交、并、差集获取方法示例
Aug 01 Python
利用Python脚本实现自动刷网课
Feb 03 Python
Python CSS选择器爬取京东网商品信息过程解析
Jun 01 Python
python自动化测试三部曲之unittest框架的实现
Oct 07 Python
详解Python中list[::-1]的几种用法
Nov 16 Python
python 使用tkinter+you-get实现视频下载器
Nov 17 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注释实例技巧
2008/10/03 PHP
PHP获取浏览器信息类和客户端地理位置的2个方法
2014/04/24 PHP
CI框架自动加载session出现报错的解决办法
2014/06/17 PHP
PHP获取数组长度或某个值出现次数的方法
2015/02/11 PHP
PHP类型约束用法示例
2016/09/28 PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
2016/11/05 PHP
Yii框架实现记录日志到自定义文件的方法
2017/05/23 PHP
django中的ajax组件教程详解
2018/10/18 PHP
PHP的mysqli_stat()函数讲解
2019/01/23 PHP
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
2007/08/15 Javascript
jQuery操作表单常用控件方法小结
2015/03/23 Javascript
JS实现控制表格单元格垂直对齐的方法
2015/03/30 Javascript
jQuery实现tab选项卡效果的方法
2015/07/08 Javascript
原生JS实现拖拽图片效果
2020/08/27 Javascript
详解Node.js包的工程目录与NPM包管理器的使用
2016/02/16 Javascript
简单理解vue中el、template、replace元素
2016/10/27 Javascript
原生JS实现隐藏显示图片 JS实现点击切换图片效果
2021/01/27 Javascript
vue做网页开场视频的实例代码
2017/10/20 Javascript
vue实现按需加载组件及异步组件功能
2019/05/27 Javascript
JavaScript实现简单动态表格
2020/12/02 Javascript
[00:37]2016完美“圣”典风云人物:AMS宣传片
2016/12/06 DOTA
[44:22]完美世界DOTA2联赛循环赛 FTD vs PXG BO2第一场 11.01
2020/11/02 DOTA
python爬虫 正则表达式使用技巧及爬取个人博客的实例讲解
2017/10/20 Python
Python 多维List创建的问题小结
2019/01/18 Python
解决jupyter notebook 前面书写后面内容消失的问题
2020/04/13 Python
python爬虫快速响应服务器的做法
2020/11/24 Python
HTML5 Canvas旋转动画的2个代码例子(一个旋转的太极图效果)
2014/04/10 HTML / CSS
欧洲最大的笔和书写专家:The Pen Shop
2017/03/19 全球购物
"火柴棍式"程序员面试题
2014/03/16 面试题
个人安全生产承诺书
2014/05/22 职场文书
毕业生求职信
2014/06/10 职场文书
建筑结构施工求职信
2014/07/11 职场文书
优秀教师单行材料
2014/12/16 职场文书
幼儿园推普周活动总结
2015/05/07 职场文书
详解MySQL 联合查询优化机制
2021/05/10 MySQL
解决Navicat for Mysql连接报错1251的问题(连接失败)
2021/05/27 MySQL