用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 相关文章推荐
使用python3.5仿微软记事本notepad
Jun 15 Python
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
Dec 27 Python
python3实现ftp服务功能(客户端)
Mar 24 Python
python+opencv实现动态物体识别
Jan 09 Python
Python 加密与解密小结
Dec 06 Python
Python饼状图的绘制实例
Jan 15 Python
python定时复制远程文件夹中所有文件
Apr 30 Python
pytorch点乘与叉乘示例讲解
Dec 27 Python
python matplotlib实现将图例放在图外
Apr 17 Python
python判断字符串以什么结尾的实例方法
Sep 18 Python
pip install命令安装扩展库整理
Mar 02 Python
Python中glob库实现文件名的匹配
Jun 18 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的substr_replace将指定两位置之间的字符替换为*号
2011/05/04 PHP
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
2012/03/05 PHP
php获取字段名示例分享
2014/03/03 PHP
JavaScript Cookie显示用户上次访问的时间和次数
2009/12/08 Javascript
GWT中复制到剪贴板 js+flash实现复制 兼容性比较好
2010/03/07 Javascript
javascript 验证日期的函数
2010/03/18 Javascript
5个最佳的Javascript日期处理类库分享
2012/04/15 Javascript
html组件不可输入(只读)同时任何组件都有效
2013/04/01 Javascript
点击隐藏页面左栏或右栏实现js代码
2013/04/01 Javascript
javascript中怎么做对象的类型判断
2013/11/11 Javascript
javascript向后台传送相同属性的参数即数组参数
2014/02/17 Javascript
input输入框鼠标焦点提示信息
2015/03/17 Javascript
javascript实现input file上传图片预览效果
2015/12/31 Javascript
vue中post请求以a=a&b=b 的格式写遇到的问题
2018/04/27 Javascript
深入理解NodeJS 多进程和集群
2018/10/17 NodeJs
vue里如何主动销毁keep-alive缓存的组件
2019/03/21 Javascript
JS实现表单中点击小眼睛显示隐藏密码框中的密码
2020/04/13 Javascript
angular共享依赖的解决方案分享
2020/10/15 Javascript
JavaScript实现切换多张图片
2021/01/27 Javascript
python高手之路python处理excel文件(方法汇总)
2016/01/07 Python
python模块导入的方法
2019/10/24 Python
python中68个内置函数的总结与介绍
2020/02/24 Python
python 如何对logging日志封装
2020/12/02 Python
python多线程爬取西刺代理的示例代码
2021/01/30 Python
html5中地理位置定位api接口开发应用小结
2013/01/04 HTML / CSS
大学生社会实践方案
2014/05/11 职场文书
医学求职信
2014/05/28 职场文书
校庆活动策划方案
2014/06/05 职场文书
公务员政审材料
2014/12/23 职场文书
考研英语辞职信
2015/05/13 职场文书
2015年敬老院工作总结
2015/05/18 职场文书
社区安置帮教工作总结2015
2015/05/20 职场文书
调解书格式范本
2015/05/20 职场文书
2016年全国爱牙日宣传活动总结
2016/04/05 职场文书
JavaScript嵌入百度地图API的最详细方法
2021/04/16 Javascript
SpringBoot 集成短信和邮件 以阿里云短信服务为例
2022/04/22 Java/Android