注意:
-新手上路,代码写得不好请多见谅
-若要将此脚本应用于软件更新,需要自行添加检查版本号的语句
-使用的UA似乎为手机版,文章是完成脚本后写的,可能会有冲突(尽量避免)
-下载链接见结尾 / 评论区
思路:
最开始想给另一个自制的软件提供自动更新用,但是那个软件鸽了,所以做了这个
1.我们先来打开个分享链接(https://xxxx.lanzoux.com/xxxxxxxx)获取到的页面
设置UA为“Mozilla/5.0 (iPhone; CPU iPhone OS 11_0_1 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A402 Safari/604.1”(手机版)
使用python中requests库中的get获取此页面,可以看到一大堆有的没的的东西获取的东西
复制进vscode,可以发现在第41行有我们需要的按钮,所以接下来思路要跟他走我们接下来需要获取的东西
2.获取按钮
代码第93 - 111行
选中需要获取的信息,可以看到他的位置在/html/body/div/div/a中的herf里
开始获取这段信息,import库lxml中的etree,使用
str(html.xpath('/html/body/div/div/a/@href')).replace("'",'').replace('[','').replace(']','')
获取”/tp/iOOPLewdffe“。
接着进入这个链接,比如我这里就是 "xxxx.lanzoux.com/tp/iOOPLewdffe"xxxx.lanzoux.com/tp/iOOPLewdffe中的内容
可以看到下载按钮出来了,胜利近在咫尺,只需要获取这个按钮的内容就可以下载了
3.重复步骤
代码第29 - 42行
重复get的步骤来获取这个链接,看到在获取的内容的50-70行有以下内容获取到的内容
此时我的大脑:这XX什么玩意??
这里并没有下载链接,只有一堆function,于是我去看了下下载网址下载的URL
啊....这.....
他把domainload和 71 行一大堆字符加起来就得到了下载链接
看着很简单,所以我到无万能的百度去搜了“python中etree怎么获取function”
整整两小时,除了脑袋晕以外其他什么都没找到
只好放弃这个方法,用老split勉强实现(你该去学学正则了)用于实现功能的代码
BUTT,当我把下载地址用get进行下载的时候
我获得的只是个 133 行的html(当时心情:你个茄子啊????)
经过半小时的心情恢复,我在 107 - 111 行找到了以下内容令人感到十分茄子的内容(wd..
辣么,根据这个post来看,我只需要把data都一股脑的post到ajax.php就行了对吧
对,这次真对了。
代码第43 - 88行,包含进度下载OHHHHHHHHHHHHHHHHHH
成功!
4.自动更新,获取简介,版本,更新网址
代码第12 - 26行
12-26行
这里我使用了文件夹中的“话说”话说
使用“@”符号作为分隔符,分割出了文件的链接,版本号(0.0.1那里)和openid(可以用作更新的说明,10800那里)
如何使用:
1.在蓝奏云新建一个文件夹,修改话说
话说的格式为:
【更新文件的分享链接】@【更新的说明】@【版本号】
例如我要将part3.mp3作为【更新文件的分享链接】
1.1 分享出part3.MP3的分享地址1.1
1.2 复制链接1.2
1.3 复制到话说
1.3
1.4 加俩“@”,@中间要有东西,随便在中间加点东西
1.4
1.5 关闭文件夹的密码
1.5
1.6 分享该文件夹,获取到的链接输入到代码第 17 行内
1.6
完成
后话:
-由于没学正则表达式,许多功能都只能勉强实现(这里的勉强指的是可以用,但是页面内容一变就失效)
-最后那个post的过程中,我发现了似乎get也能下载(发布的就是用的get)
-如果要用作更新器,请删除114行,并在113行输入类似内容,并且需要自己获取目前版本
目前版本是需输入的内容
下载链接:https://ntgpro.lanzoux.com/iUu9Lkh5nte