教你用Python爬取英雄联盟皮肤原画


Posted in Python onJune 13, 2021

一、推理原理

1.先去《英雄联盟》官网找到英雄及皮肤图片的网址:

http://lol.qq.com/data/info-heros.shtml

教你用Python爬取英雄联盟皮肤原画

2.从上面网址可以看到所有英雄都在,按下F12查看源代码,发现英雄及皮肤图片并没有直接给出,而是隐藏在JS文件中。这时候需要点开Network,找到js窗口,刷新网页,就看到一个champion.js的选项,点击可以看到一个字典——里面就包含了所有英雄的名字(英文)以及对应的编号。

教你用Python爬取英雄联盟皮肤原画

3.但是只有英雄的名字(英文)以及对应的编号并不能找到图片地址,于是回到网页,随便点开一个英雄,跳转页面后发现英雄及皮肤的图片都在,但要下载还需要找到原地址,这是鼠标右击选择“在新标签页中打开”,新的网页才是图片的原地址。

教你用Python爬取英雄联盟皮肤原画

4.图中红色框就是我们需要的图片地址,经过分析知道:每一个英雄及皮肤的地址只有编号不一样(http://ossweb-img.qq.com/images/lol/web201310/skin/big266000.jpg),而该编号有6位,前3位表示英雄,后三位表示皮肤。刚才找到的js文件中恰好有英雄的编号,而皮肤的编码可以自己定义,反正每个英雄皮肤不超过20个,然后组合起来就可以了。

教你用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中的进程分支fork和exec详解
Apr 11 Python
浅析Python中MySQLdb的事务处理功能
Sep 21 Python
python实现列表中最大最小值输出的示例
Jul 09 Python
在VS2017中用C#调用python脚本的实现
Jul 31 Python
Windows下PyCharm2018.3.2 安装教程(图文详解)
Oct 24 Python
python用quad、dblquad实现一维二维积分的实例详解
Nov 20 Python
python实现逢七拍腿小游戏的思路详解
May 26 Python
Python过滤序列元素的方法
Jul 31 Python
python hmac模块验证客户端的合法性
Nov 07 Python
Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
Nov 10 Python
Pytorch如何切换 cpu和gpu的使用详解
Mar 01 Python
Python Pandas常用函数方法总结
Jun 15 Python
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
python基础入门之普通操作与函数(三)
python基础入门之字典和集合
Python OpenCV实现传统图片格式与base64转换
Jun 13 #Python
python实现A*寻路算法
Python实现生成bmp图像的方法
Jun 13 #Python
Python实现随机生成迷宫并自动寻路
You might like
jQuery EasyUI API 中文文档 - DateBox日期框
2011/10/15 PHP
PHP中的日期加减方法示例
2014/08/21 PHP
php封装的page分页类完整实例代码
2020/02/01 PHP
javascript实现的基于金山词霸网络翻译的代码
2010/01/15 Javascript
Array.prototype.concat不是通用方法反驳[译]
2012/09/20 Javascript
js中页面的重新加载(当前页面/上级页面)及frame或iframe元素引用介绍
2013/01/24 Javascript
js实现杯子倒水问题自动求解程序
2013/03/25 Javascript
js 自定义个性下拉选择框示例
2013/08/20 Javascript
js document.write()使用介绍
2014/02/21 Javascript
jQuery获取某天的农历日期并判断是否除夕或新年的方法
2016/03/01 Javascript
jQuery焦点图轮播效果实现方法
2016/12/19 Javascript
webpack打包单页面如何引用的js
2017/06/07 Javascript
浅析vue给不同环境配置不同打包命令
2018/08/17 Javascript
JS数组方法reduce的用法实例分析
2020/03/03 Javascript
浅谈vue在html中出现{{}}的原因及解决方式
2020/11/16 Javascript
vue使用exif获取图片经纬度的示例代码
2020/12/11 Vue.js
[01:11]回顾历届DOTA2国际邀请赛中国区预选赛
2017/06/26 DOTA
[01:34]DAC2018主赛事第四日五佳镜头 Gh巨牙海民助Miracle-死里逃生
2018/04/07 DOTA
python统计文本文件内单词数量的方法
2015/05/30 Python
Python实现图像几何变换
2015/07/06 Python
python常用函数详解
2016/09/13 Python
在Pycharm中执行scrapy命令的方法
2019/01/16 Python
Python 通过截图匹配原图中的位置(opencv)实例
2019/08/27 Python
Python3 解决读取中文文件txt编码的问题
2019/12/20 Python
Elasticsearch py客户端库安装及使用方法解析
2020/09/14 Python
Python机器学习工具scikit-learn的使用笔记
2021/01/28 Python
基于第一个PhoneGap(cordova)的应用详解
2013/05/03 HTML / CSS
IRO美国官网:法国服装品牌
2018/03/06 全球购物
千禧酒店及度假村官方网站:Millennium Hotels and Resorts
2019/05/10 全球购物
马来西亚户外装备商店:PTT Outdoor
2019/07/13 全球购物
美国家居装饰网上商店:Lulu & Georgia
2019/09/14 全球购物
保加利亚服装和鞋类购物网站:Bibloo.bg
2020/11/08 全球购物
公司端午节活动方案
2014/02/04 职场文书
运动会演讲稿
2014/05/07 职场文书
夫妻房产协议书的格式
2014/10/11 职场文书
mysql查找连续出现n次以上的数字
2022/05/11 MySQL