用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 爬虫之超链接 url中含有中文出错及解决办法
Aug 03 Python
Django实现简单分页功能的方法详解
Dec 05 Python
用Python和WordCloud绘制词云的实现方法(内附让字体清晰的秘笈)
Jan 08 Python
对Python函数设计规范详解
Jul 19 Python
Tensorflow实现酸奶销量预测分析
Jul 19 Python
python同时遍历两个list用法说明
May 02 Python
基于FME使用Python过程图解
May 13 Python
python怎么提高计算速度
Jun 11 Python
Python使用pyexecjs代码案例解析
Jul 13 Python
Python字符串对齐、删除字符串不需要的内容以及格式化打印字符
Jan 23 Python
python pyg2plot的原理知识点总结
Feb 28 Python
Python开发五子棋小游戏
May 02 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
第十节 抽象方法和抽象类 [10]
2006/10/09 PHP
基于qmail的完整WEBMAIL解决方案安装详解
2006/10/09 PHP
如何将数据从文本导入到mysql
2006/10/09 PHP
php 用checkbox一次性删除多条记录的方法
2010/02/23 PHP
PHP校验ISBN码的函数代码
2011/01/17 PHP
计算php页面运行时间的函数介绍
2013/07/01 PHP
PHP代码优化之成员变量获取速度对比
2014/02/28 PHP
PHP学习笔记(二):变量详解
2015/04/17 PHP
PHP获取指定时间段之间的 年,月,天,时,分,秒
2016/06/05 PHP
使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能示例
2017/09/15 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
2017/11/12 PHP
Laravel实现通过blade模板引擎渲染视图
2019/10/25 PHP
javascript之锁定表格栏位
2007/06/29 Javascript
用js实现输入提示(自动完成)的实例代码
2013/06/14 Javascript
使用ajaxfileupload.js实现ajax上传文件php版
2014/06/26 Javascript
用jquery模仿的a的title属性的例子
2014/10/22 Javascript
JS实现仿新浪黄色经典滑动门效果代码
2015/09/27 Javascript
浏览器环境下JavaScript脚本加载与执行探析之defer与async特性
2016/01/14 Javascript
使用Bootstrap + Vue.js实现添加删除数据示例
2017/02/27 Javascript
javascript使用btoa和atob来进行Base64转码和解码
2017/03/20 Javascript
使用mint-ui实现省市区三级联动效果的示例代码
2018/02/09 Javascript
js实现淘宝首页的banner栏效果
2019/11/26 Javascript
Python学习笔记整理3之输入输出、python eval函数
2015/12/14 Python
python编程使用selenium模拟登陆淘宝实例代码
2018/01/25 Python
使用实现pandas读取csv文件指定的前几行
2018/04/20 Python
Python中dict和set的用法讲解
2019/03/28 Python
Python socket实现的文件下载器功能示例
2019/11/15 Python
如何更改 pandas dataframe 中两列的位置
2019/12/27 Python
python简单利用字典破解zip文件口令
2020/09/07 Python
英国知名的护肤彩妆与时尚配饰大型综合零售电商:Unineed
2016/11/21 全球购物
请写出char *p与"零值"比较的if语句
2014/09/24 面试题
三项教育活动实施方案
2014/03/30 职场文书
银行授权委托书样本
2014/10/13 职场文书
离婚财产分隔协议书
2014/10/23 职场文书
风雨哈佛路观后感
2015/06/03 职场文书
2021年国产动漫公司排行前十名,玄机科技上榜,第二推出过铠甲勇士
2022/03/18 杂记