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官网的皮肤保存下来,上传百度云,记录那些强撸灰飞烟灭的日子的更多相关文章

  1. 怎么样通过编写Python小程序来统计测试脚本的关键字

    怎么样通过编写Python小程序来统计测试脚本的关键字 通常自动化测试项目到了一定的程序,编写的测试代码自然就会很多,如果很早已经编写的测试脚本现在某些基础函数.业务函数需要修改,那么势必要找出那些引 ...

  2. 微信小程序--问题汇总及详解之图片上传和地图

    地图用的是百度的地图,链接:http://lbsyun.baidu.com/index.php?title=wxjsapi/guide/getlocation 获取日期时间可以用小程序里自带的js文件 ...

  3. 前端笔记之微信小程序(三)GET请求案例&文件上传和相册API&配置https

    一.信息流小程序-GET请求案例 1.1服务端接口开发 一定要养成接口的意识,前端单打独斗出不来任何效果,必须有接口配合,写一个带有分页.关键词查询的接口: 分页接口:http://127.0.0.1 ...

  4. 基于php基础语言编写的小程序之计算器

    基于php基础语言编写的小程序之计算器 需求:在输入框中输入数字进行加.减.乘.除运算(html+php) 思路: 1首先要创建输入数字和运算符的输入框,数字用input的text属性,运算符用sel ...

  5. Python 小程序,对文件操作及其它

    以下是自己写的几个对文件操作的小程序,里面涉及到文件操作,列表(集合,字典)的运用等.比方说,从文件里读取一行数据.分别存放于列表中,再对列表进行操作.如去掉里面的反复项.排序等操作. 常见对文件里行 ...

  6. Day1:第一个python小程序

    Day1:第一个python小程序与开发工具Pycharm 一.Hello World C:\Users\wenxh>python Python 3.6.2 (v3.6.2:5fd33b5, J ...

  7. 微信小程序中图片上传阿里云Oss

    本人今年6月份毕业,最近刚在上海一家小公司实习,做微信小程序开发.最近工作遇到一个小问题. 微信小程序图片上传阿里云服务器Oss也折腾了蛮久才解决的,所以特意去记录一下. 第一步:配置阿里云地址: 我 ...

  8. 支付宝小程序serverless---获取用户信息(头像)并保存到云数据库

    支付宝小程序serverless---获取用户信息(头像)并保存到云数据库 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 我又 ...

  9. python 开发一款图片压缩工具(四):上传图床

    上一篇使用了 pngquant 图片压缩工具进行压缩,并通过 click 命令行工具构建了 picom 包.这篇的主要功能是实现图片上传. 图片上传功能的实现 通过 pngquant 压缩图片后,得到 ...

随机推荐

  1. TCP协议三次握手、四次挥手

    TCP的概述 TCP 把连接作为最基本的对象,每一条 TCP 连接都有两个端点,这种断点我们叫作套接字(socket),它的定义为端口号拼接到 IP 地址即构成了套接字,例如,若 IP 地址为 192 ...

  2. JDK1.8 新特性

    jdk1.8新特性知识点: Lambda表达式 函数式接口 *方法引用和构造器调用 Stream API 接口中的默认方法和静态方法 新时间日期API https://blog.csdn.net/qq ...

  3. 点击倒计时60S获取验证码

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script sr ...

  4. jmeter之接口测试(http接口测试)

    基础知识储备 一.了解jmeter接口测试请求接口的原理 客户端--发送一个请求动作--服务器响应--返回客户端 客户端--发送一个请求动作--jmeter代理服务器---服务器--jmeter代理服 ...

  5. 以太坊钱包开发系列2 - 账号Keystore文件导入导出

    以太坊去中心化网页钱包开发系列,将从零开始开发出一个可以实际使用的钱包,本系列文章是理论与实战相结合,一共有四篇:创建钱包账号.账号Keystore文件导入导出.展示钱包信息及发起签名交易.发送Tok ...

  6. RDP服务开启

    一.RDP协议概述 远程桌面协议(RDP, Remote Desktop Protocol)是一个多通道(multi-channel)的协议,让用户(客户端或称“本地电脑”)连上提供微软终端机服务的电 ...

  7. css实现0.5px

    使用缩放来0.5来实现,注意兼容各种浏览器 .frz-list li:after { content: ''; position: absolute; bottom:; height: 1px; wi ...

  8. createDocumentFragment() 方法

    //createdocumentfragment()方法创建了一虚拟的节点对象,节点对象包含所有属性和方法. //当你想提取文档的一部分,改变,增加,或删除某些内容及插入到文档末尾可以使用create ...

  9. 依赖注入原理---IoC框架

    先来讲一讲,一个简单的依赖注入例子. 1. 依赖 如果在 Class A 中,有 Class B 的实例,则称 Class A 对 Class B 有一个依赖.例如下面类 Human 中用到一个 Fa ...

  10. vscode extensions

    ├─ .obsolete├─ .wlck├─ .wtid├─ abeyuhang.vscode-lesslint-0.0.1├─ abusaidm.html-snippets-0.2.1├─ adam ...