用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函数参数*args**kwargs用法实例
Dec 04 Python
Python的设计模式编程入门指南
Apr 02 Python
详解Python中open()函数指定文件打开方式的用法
Jun 04 Python
Python实现两个list对应元素相减操作示例
Jun 09 Python
使用Python & Flask 实现RESTful Web API的实例
Sep 19 Python
在Pycharm中调试Django项目程序的操作方法
Jul 17 Python
pygame实现烟雨蒙蒙下彩虹雨
Nov 11 Python
python matplotlib拟合直线的实现
Nov 19 Python
python实现将json多行数据传入到mysql中使用
Dec 31 Python
Python3标准库之threading进程中管理并发操作方法
Mar 30 Python
Python应用自动化部署工具Fabric原理及使用解析
Nov 30 Python
pytest fixtures装饰器的使用和如何控制用例的执行顺序
Jan 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
C#使用PHP服务端的Web Service通信实例
2014/04/08 PHP
User Scripts: Video Download by User Scripts
2007/05/14 Javascript
Javascript 读后台cookie代码
2008/09/15 Javascript
JavaScript中的prototype使用说明
2010/04/13 Javascript
通过AJAX的JS、JQuery两种方式解析XML示例介绍
2013/09/23 Javascript
jQuery的:parent选择器定义和用法
2014/07/01 Javascript
jQuery中attr()方法用法实例
2015/01/05 Javascript
jquery中取消和绑定hover事件的实现代码
2016/06/02 Javascript
详解Javascript中prototype属性(推荐)
2016/09/03 Javascript
javascript 使用正则test( )第一次是 true,第二次是false
2017/02/22 Javascript
Vue.Js中的$watch()方法总结
2017/03/23 Javascript
JS移动端/H5同时选择多张图片上传并使用canvas压缩图片
2017/06/20 Javascript
面包屑导航详解
2017/12/07 Javascript
Vue-cli@3.0 插件系统简析
2018/09/05 Javascript
Javascript模拟实现new原理解析
2020/03/03 Javascript
浅谈vue 组件中的setInterval方法和window的不同
2020/07/30 Javascript
python实现根据用户输入从电影网站获取影片信息的方法
2015/04/07 Python
Python输出带颜色的字符串实例
2017/10/10 Python
Python continue继续循环用法总结
2018/06/10 Python
Python字符串逆序的实现方法【一题多解】
2019/02/18 Python
使用Python在Windows下获取USB PID&VID的方法
2019/07/02 Python
python实现socket+threading处理多连接的方法
2019/07/23 Python
Python爬虫实现自动登录、签到功能的代码
2020/08/20 Python
HTML5 拖放(Drag 和 Drop)详解与实例代码
2017/09/14 HTML / CSS
HTML5 直播疯狂点赞动画实现代码 附源码
2020/04/14 HTML / CSS
英国户外服装品牌:Craghoppers
2019/04/25 全球购物
美国珠宝精品店:Opulent Jewelers
2019/08/20 全球购物
毕业自我鉴定
2013/11/05 职场文书
优秀老师事迹材料
2014/02/05 职场文书
四年级评语大全
2014/04/21 职场文书
竞选副班长演讲稿
2014/04/24 职场文书
委托证明模板
2014/09/16 职场文书
征求意见函
2015/06/05 职场文书
安全主题班会教案
2015/08/12 职场文书
企业愿景口号
2015/12/25 职场文书
MySQL中一条SQL查询语句是如何执行的
2022/04/08 MySQL