编写 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 压缩图片后,得到 ...
随机推荐
- TCP协议三次握手、四次挥手
TCP的概述 TCP 把连接作为最基本的对象,每一条 TCP 连接都有两个端点,这种断点我们叫作套接字(socket),它的定义为端口号拼接到 IP 地址即构成了套接字,例如,若 IP 地址为 192 ...
- JDK1.8 新特性
jdk1.8新特性知识点: Lambda表达式 函数式接口 *方法引用和构造器调用 Stream API 接口中的默认方法和静态方法 新时间日期API https://blog.csdn.net/qq ...
- 点击倒计时60S获取验证码
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script sr ...
- jmeter之接口测试(http接口测试)
基础知识储备 一.了解jmeter接口测试请求接口的原理 客户端--发送一个请求动作--服务器响应--返回客户端 客户端--发送一个请求动作--jmeter代理服务器---服务器--jmeter代理服 ...
- 以太坊钱包开发系列2 - 账号Keystore文件导入导出
以太坊去中心化网页钱包开发系列,将从零开始开发出一个可以实际使用的钱包,本系列文章是理论与实战相结合,一共有四篇:创建钱包账号.账号Keystore文件导入导出.展示钱包信息及发起签名交易.发送Tok ...
- RDP服务开启
一.RDP协议概述 远程桌面协议(RDP, Remote Desktop Protocol)是一个多通道(multi-channel)的协议,让用户(客户端或称“本地电脑”)连上提供微软终端机服务的电 ...
- css实现0.5px
使用缩放来0.5来实现,注意兼容各种浏览器 .frz-list li:after { content: ''; position: absolute; bottom:; height: 1px; wi ...
- createDocumentFragment() 方法
//createdocumentfragment()方法创建了一虚拟的节点对象,节点对象包含所有属性和方法. //当你想提取文档的一部分,改变,增加,或删除某些内容及插入到文档末尾可以使用create ...
- 依赖注入原理---IoC框架
先来讲一讲,一个简单的依赖注入例子. 1. 依赖 如果在 Class A 中,有 Class B 的实例,则称 Class A 对 Class B 有一个依赖.例如下面类 Human 中用到一个 Fa ...
- vscode extensions
├─ .obsolete├─ .wlck├─ .wtid├─ abeyuhang.vscode-lesslint-0.0.1├─ abusaidm.html-snippets-0.2.1├─ adam ...