用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 中pandas.read_excel详细介绍
Jun 23 Python
利用Python实现Windows下的鼠标键盘模拟的实例代码
Jul 13 Python
Python中偏函数用法示例
Jun 07 Python
Python项目 基于Scapy实现SYN泛洪攻击的方法
Jul 23 Python
python使用正则来处理各种匹配问题
Dec 22 Python
Python使用docx模块实现刷题功能代码
Feb 13 Python
Python实现井字棋小游戏
Mar 09 Python
python爬虫开发之使用python爬虫库requests,urllib与今日头条搜索功能爬取搜索内容实例
Mar 10 Python
python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
Apr 24 Python
Python3爬虫中Selenium的用法详解
Jul 10 Python
python pandas dataframe 去重函数的具体使用
Jul 20 Python
python自动化八大定位元素讲解
Jul 09 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
在windows服务器开启php的gd库phpinfo中未发现
2013/01/13 PHP
用PHP实现浏览器点击下载TXT文档的方法详解
2013/06/02 PHP
ThinkPHP3.1新特性之G方法的使用
2014/06/19 PHP
利用laravel+ajax实现文件上传功能方法示例
2017/08/13 PHP
Laravel 类和接口注入相关的代码
2019/10/15 PHP
js 获取中文拼音,Select自动匹配字母获取值的代码
2009/09/23 Javascript
WEB页子窗口(showModalDialog和showModelessDialog)使用说明
2009/10/25 Javascript
在服务端(Page.Write)调用自定义的JS方法详解
2013/08/09 Javascript
JavaScript中定时控制Throttle、Debounce和Immediate详解
2016/11/17 Javascript
BootStrap学习系列之布局组件(下拉,按钮组[toolbar],上拉)
2017/01/03 Javascript
详解浏览器渲染页面过程
2017/02/09 Javascript
jQuery+PHP+Mysql实现抽奖程序
2020/04/12 jQuery
详谈表单重复提交的三种情况及解决方法
2017/08/16 Javascript
jQuery plugin animsition使用小结
2017/09/14 jQuery
jQuery实现切换隐藏与显示同时切换图标功能
2017/10/29 jQuery
Javascript中JSON数据分组优化实践及JS操作JSON总结
2017/12/22 Javascript
一次记住JavaScript的6个正则表达式方法
2018/02/22 Javascript
使用pm2自动化部署node项目的方法步骤
2019/01/28 Javascript
JS中FileReader类实现文件上传及时预览功能
2020/03/27 Javascript
Python生成随机数的方法
2014/01/14 Python
探索Python3.4中新引入的asyncio模块
2015/04/08 Python
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
2016/07/12 Python
Python 制作糗事百科爬虫实例
2016/09/22 Python
Python获取SQLite查询结果表列名的方法
2017/06/21 Python
基于python的Tkinter编写登陆注册界面
2017/06/30 Python
Python内置函数 next的具体使用方法
2017/11/24 Python
用Python编写一个高效的端口扫描器的方法
2018/12/20 Python
python pandas写入excel文件的方法示例
2019/06/25 Python
如何用python免费看美剧
2020/08/11 Python
OpenCV+Python3.5 简易手势识别的实现
2020/12/21 Python
Raffaello Network西班牙:意大利拉斐尔时尚购物网
2019/03/12 全球购物
一篇.NET面试题
2014/09/29 面试题
外贸实习生自荐信范文
2013/11/24 职场文书
一句话工作感言
2014/03/01 职场文书
高职教师先进事迹材料
2014/08/24 职场文书
Nginx代理Redis哨兵主从配置的实现
2022/07/15 Servers