编写 python 小程序,将LOL官网的皮肤保存下来,上传百度云,记录那些强撸灰飞烟灭的日子
to
撸的血泪史:大学四年几乎都在宿舍打撸,So,把官网的皮肤都保存下来,存到百度云,就当一种纪念
编辑器:pycharm
用到的包:urllib.request, requests, json, re, os
#######分析:
进入LOL官网,点击资料库,进入所有英雄列表(网址:http://lol.qq.com/web201310/info-heros.shtml)
然后单击某个英雄进入皮肤列表,可以发现各个英雄皮肤的网页网址只有一部分是变化,如风女

再如:提莫

观察发现前面一部分网址是不变的,只有后面一部分的id随不同的英雄而不同
So,皮肤界面的网址是,http://lol.qq.com/web201310/info-defail.shtml? + 英雄id
在皮肤页面 切换各个皮肤,利用键盘Fn+F12 (或F12) 用页面元素获取功能 ,鼠标移到到各个皮肤上面,定位到网页代码里面图片的网址
如下图,可以看出皮肤的网址:
http://ossweb-img.qq.com/images/lol/web201310/skin/big17000.jpg
http://ossweb-img.qq.com/images/lol/web201310/skin/big17001.jpg
规律:17是和英雄id对应的数字,000是默认皮肤,从001开始是英雄的皮肤,有几个皮肤就到00几
皮肤的网址是http://ossweb-img.qq.com/images/lol/web201310/skin/big(同一个英雄这部分是不变的)+与英雄id对应的数+皮肤的编号+.jpg
Ps:用程序保存图片和人工差不多,首先要找到该图片然后保存本地。

#######思路
要找到英雄id保存在那个文件and 皮肤id保存在哪个文件(Ps很重要)
进入英雄列表,键盘Fn+F12(或F12) ,点击网络或Network,点选GS。英雄的id在champion.gs文件中

打开这个文件,复制请求网址,在浏览器中打开:观察发现英雄id与其对应的数都在里面

然后进入皮肤界面寻找皮肤id,同理,键盘Fn+F12(或F12) ,点击网络或Network,点选GS。提莫皮肤的id在teemo.gs文件中

打开gs文件,可以看到皮肤以及其对应的数字都在里面。

#######写代码,找到了皮肤对应的网址,就可以写代码了
import urllib.request, requests, json, re, os url = r'http://lol.qq.com/biz/hero/champion.js'
data = requests.get(url).text
id_name = re.compile(r'LOLherojs.champion={"keys":(.+?),"data"')
ids = re.findall(id_name, data)
names = list(json.loads(ids[0]).values())
for name in names:
img_js_url = r'http://lol.qq.com/biz/hero/%s.js' % name
data1 = requests.get(img_js_url).text
img_ids = re.findall(re.compile(r'"skins":(.+?)"info"'), data1)
data2 = re.findall(re.compile(r'"id":"(.+?)"'), img_ids[0])
for id in data2:
img_url = r'http://ossweb-img.qq.com/images/lol/web201310/skin/big%s.jpg' % id
base_path = r'D:\pycharm_projects\test\lolskin'
if not os.path.exists(os.path.join(base_path, name)):
os.mkdir(os.path.join(base_path, name))
png_name = str(name) + id + '.png'
save_png_path = os.path.join(base_path, name, png_name)
urllib.request.urlretrieve(img_url, save_png_path) ######解析
import urllib.request, requests, json, re, os # 要用到的库,也可以说包 url = r'http://lol.qq.com/biz/hero/champion.js' # url:统一资源定位符,此处是一个变量。将champion.js的网址以字符串的形式赋值给url
data = requests.get(url).text # 利用 request里面的get()函数将champion.js里面的内容写到一个txt文件中,将该文件命名为data
id_name = re.compile(r'LOLherojs.champion={"keys":(.+?),"data"') # "keys":(.+?),"data"将data里我们需要的部分也就是英雄id和其对应的数标记一下,方便后面取出来。利用re里面的预先编译函数,可以让这一步进行的更流畅
ids = re.findall(id_name, data)#利用re里面的额遍历查询函数把上一部标记的部分以列表的形式返回,结果是将我们需要的部分作为列表的第一个元素返回,列表只有一个元素
names = list(json.loads(ids[0]).values())#json.loads(ids[0])利用json里面的loads函数将上一步列表的第一个元素变为字典,然后.values()将字典的各个元素存到叠加器里里面,list函数再将其强制转换成列表,列表的元素为[英雄id:数字,英雄id:数字.....]
for name in names: #这一步处理英雄皮肤的gs文件如上一步类似
img_js_url = r'http://lol.qq.com/biz/hero/%s.js' % name #皮肤的网址中英雄id这一部分是变的,利用%占位符来进行改变
data1 = requests.get(img_js_url).text
img_ids = re.findall(re.compile(r'"skins":(.+?)"info"'), data1)
data2 = re.findall(re.compile(r'"id":"(.+?)"'), img_ids[0])
for id in data2: #这一步是存储图
img_url = r'http://ossweb-img.qq.com/images/lol/web201310/skin/big%s.jpg' % id #图的网址
base_path = r'D:\pycharm_projects\test\lolskin' #你要把图存放在哪个目录
if not os.path.exists(os.path.join(base_path, name)): #os.path.join(base_path, name)将base_path, name两个路径组合,os是个处理文件夹的库 此句用来判断组合后的目录是否存在
os.mkdir(os.path.join(base_path, name))# 用if判断,如果上一步中的目录不存在存在,os.mkdir,新建该目录
png_name = str(name) + id + '.png'#图的命名包括二部分 英雄id+皮肤id
save_png_path = os.path.join(base_path, name, png_name) #创建子文件夹,每个英雄一个文件夹
urllib.request.urlretrieve(img_url, save_png_path)#将img_url网址下的图片不占资源地保存到上一步创建的文件夹中
编写 python 小程序,将LOL官网的皮肤保存下来,上传百度云,记录那些强撸灰飞烟灭的日子的更多相关文章
- 怎么样通过编写Python小程序来统计测试脚本的关键字
怎么样通过编写Python小程序来统计测试脚本的关键字 通常自动化测试项目到了一定的程序,编写的测试代码自然就会很多,如果很早已经编写的测试脚本现在某些基础函数.业务函数需要修改,那么势必要找出那些引 ...
- 微信小程序--问题汇总及详解之图片上传和地图
地图用的是百度的地图,链接:http://lbsyun.baidu.com/index.php?title=wxjsapi/guide/getlocation 获取日期时间可以用小程序里自带的js文件 ...
- 前端笔记之微信小程序(三)GET请求案例&文件上传和相册API&配置https
一.信息流小程序-GET请求案例 1.1服务端接口开发 一定要养成接口的意识,前端单打独斗出不来任何效果,必须有接口配合,写一个带有分页.关键词查询的接口: 分页接口:http://127.0.0.1 ...
- 基于php基础语言编写的小程序之计算器
基于php基础语言编写的小程序之计算器 需求:在输入框中输入数字进行加.减.乘.除运算(html+php) 思路: 1首先要创建输入数字和运算符的输入框,数字用input的text属性,运算符用sel ...
- Python 小程序,对文件操作及其它
以下是自己写的几个对文件操作的小程序,里面涉及到文件操作,列表(集合,字典)的运用等.比方说,从文件里读取一行数据.分别存放于列表中,再对列表进行操作.如去掉里面的反复项.排序等操作. 常见对文件里行 ...
- Day1:第一个python小程序
Day1:第一个python小程序与开发工具Pycharm 一.Hello World C:\Users\wenxh>python Python 3.6.2 (v3.6.2:5fd33b5, J ...
- 微信小程序中图片上传阿里云Oss
本人今年6月份毕业,最近刚在上海一家小公司实习,做微信小程序开发.最近工作遇到一个小问题. 微信小程序图片上传阿里云服务器Oss也折腾了蛮久才解决的,所以特意去记录一下. 第一步:配置阿里云地址: 我 ...
- 支付宝小程序serverless---获取用户信息(头像)并保存到云数据库
支付宝小程序serverless---获取用户信息(头像)并保存到云数据库 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 我又 ...
- python 开发一款图片压缩工具(四):上传图床
上一篇使用了 pngquant 图片压缩工具进行压缩,并通过 click 命令行工具构建了 picom 包.这篇的主要功能是实现图片上传. 图片上传功能的实现 通过 pngquant 压缩图片后,得到 ...
随机推荐
- Kaggel比赛 : [Give Me Some Credit]
通过预测在未来两年内某人将经历财务困境的可能性,改善信用评分的状态. Description 银行在市场经济中扮演着至关重要的角色.他们决定谁可以获得融资,以及什么条件,可以做出或破坏投资决策.为了让 ...
- 牛客练习赛26—D xor序列 —线性基
这是我第一次写关于线性基的题目.其实这题很好理解,先把给出的数能异或出的值给存在p数组里面,p[i]代表着该异或出的数的最高位为第i位且为1. 求出来后,再把x,y处理下,然后直接一位一位的判断是否为 ...
- U3D外包公司:Ruby的未来
那是一段醉人的日子.元素数据编程,动态类型,Ruby和Rails组合而带来的约定优于配置(Convention Over Configuration)的模式,给了我们更加快速的开发和更简洁的代码.已经 ...
- react-native android/ios 根据配置文件编译时自动修改版本号
开发react-native时大都有过这个操作,当版本迭代时候要修改app版本号时,一般都这样做 Android: 的要修改build.gradle文件的versionName ios: 打开xcod ...
- CentOS7.4安装和配置zabbix4.0
一.安装zabbix前,需要搭建好LAMP环境 二.下载zabbix 进入官网:https://www.zabbix.com/ 更多详细内容请参考官方说明文档,详细的安装要求不贴出来了. https: ...
- ASM ClassReader failed to parse class file - probably due to a new Java class file version that isn't supported yet………
在照着这里例子学习ssm时,在部署阶段遇到了这个问题“ASM ClassReader failed to parse class file - probably due to a new Java c ...
- 简单粗暴的上传项目至 Github
嗯,写了一个项目,觉得还OK,就想放在 Github 继续维护和方便使用,那么如何简单快速的将代码上传至 Github 上? 1. 你得有自己的 Github账号,如何创建账号这里就不说了.因为.. ...
- 整数转罗马数字以及罗马数字转整数(java实现)
题目: 1.罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ...
- Android Vector曲折的兼容之路
Android Vector曲折的兼容之路 两年前写书的时候,就在研究Android L提出的Vector,可研究下来发现,完全不具备兼容性,相信这也是它没有被广泛使用的一个原因,经过Google的不 ...
- localStorage、sessionStorage用法以及区别
设置: sessionStorage.setItem("key", "value");localStorage.setItem("site" ...