一.前言
之前我曾做了一款小说下载器,并且在B站上发布了视频介绍(是的,我无耻的用小号给自己三连)
正如视频标题所说,软件的基础是网页源码分析,因为使用了精易模块的“网页_访问s()”命令,故而下载速度有些慢
二.为什么用精易模块
其实本来我是坚持不用模块的,但在这款软件的制作中,我发现原本易语言自带的 http读文本()只能返回空数据,于是便找到了精易模块,使用了 网页_访问s()命令
三.代码讲解
1.获取
1.1代码
小说链接为“ https://www.rikopj.com/book/70380/”,现在貌似访问不到了
你可以换个网站,当然,其他的一些东西肯定要跟着变
代码:
.版本 2
.子程序 _按钮1_被单击
.局部变量 源码, 文本型
.局部变量 计次, 整数型
.局部变量 长度, 整数型
.局部变量 代号, 文本型
' https://www.rikopj.com/book/70380/
编辑框3.加入文本 (“开始网络请求” + #换行符)
编辑框2.内容 = 网页_访问S (编辑框1.内容, , , , , , , , , , , , , , , , , , , , )
编辑框3.加入文本 (“页面源码索取完毕” + #换行符)
源码 = 编辑框2.内容
编辑框3.加入文本 (“开始截取列表” + #换行符)
源码 = 取文本右边 (源码, 取文本长度 (源码) - 寻找文本 (源码, “<li>”, , 假) + 1)
源码 = 取文本左边 (源码, 倒找文本 (源码, “</li>”, , 假) + 4)
编辑框3.加入文本 (“列表内容截取完毕” + #换行符)
编辑框2.内容 = 源码
编辑框3.加入文本 (“开始章节请求” + #换行符)
.计次循环首 (文本_取出现次数 (源码, “<li>”), 计次)
编辑框3.加入文本 (“开始请求第” + 到文本 (计次) + “章” + #换行符)
长度 = 寻找文本 (源码, #引号 + “>”, , 假) - 取文本长度 (“<li><a href=”) - 2
代号 = 取文本中间 (源码, 取文本长度 (“<li><a href=”) + 2, 长度)
编辑框3.加入文本 (“获取尾号 ” + 代号 + #换行符)
编辑框3.加入文本 (“开始下载 ” + 代号 + #换行符)
下载文章 (编辑框1.内容, 代号, 计次)
编辑框3.加入文本 (“下载完毕 ” + 代号 + #换行符)
处理事件 ()
.计次循环尾 ()
1.2解析
“编辑框3.加入文本 ()”的作用是让用户看到进度
先通过网页_访问s来请求html数据
获取后,存入“源码”变量,将章节列表的数据内容取出
我在这里使用的是取左取右,但既然是用了精益模块,你当然可以直接文本_取出中间文本 ()
下面,将“源码”变量写到编辑框内,让用户可以看到
用文本_取出现次数()来判断有几章,从而进行循环,还是找到对应的超文本标识,从而获得对应章节的代号
找到章节的代号就存起来,使用下载文章()子程序下载
最后加上处理事件()防止卡顿
2.下载
2.1代码
.版本 2
.子程序 下载文章
.参数 链接, 文本型
.参数 代号, 文本型
.参数 次数, 整数型
.局部变量 文章, 文本型
.局部变量 内容, 文本型
.局部变量 题目, 文本型
文章 = 网页_访问S (链接 + 代号, , , , , , , , , , , , , , , , , , , , )
编辑框3.加入文本 (代号 + “ 获取完毕” + #换行符)
题目 = 文本_取出中间文本 (文章, #标题头, #标题尾)
内容 = 文本_取出中间文本 (文章, #文章头, #文章尾)
编辑框3.加入文本 (代号 + “ 截取成功” + #换行符)
文章 = 题目 + #换行符 + 内容
文章 = 子文本替换 (文章, “ ”, “ ”, , , 真)
编辑框3.加入文本 (代号 + “ 空格书写规则更改成功” + #换行符)
文章 = 子文本替换 (文章, “<br/>”, #换行符, , , 真)
编辑框3.加入文本 (代号 + “ 换行符书写规则更改成功” + #换行符)
编辑框4.内容 = 文章
' ---------------------------------------------------
写到文件 (取运行目录 () + “\down\” + 到文本 (次数) + “.txt”, 到字节集 (文章))
编辑框3.加入文本 (代号 + “ 写出成功” + #换行符)
' ---------------------------------------------------
2.2解析
很简单,还是网页_访问s获取html数据
章节+代号大家不一定理解,刚刚的代号并不是链接整体,而是例如“2034501”这样的玩意,加到整本书的链接后面才能做单章链接使用
还是同样的取出操作,很简单
涉及到几个常量,我会放到最后的
合并内容,替换掉标识字符来作为可以使用的字符
写出到编辑框4里面
到最后,下载文章到对应目录,完成下载
3.常量表
.版本 2
.常量 标题头, "<文本长度: 32>"
.常量 文章头, "<文本长度: 47>"
.常量 文章尾, "<文本长度: 109>"
.常量 标题尾, "<文本长度: 82>"
3.1标题头
<div class="h1title">
<h1>
3.2文章头
<div id="htmlContent" class="contentbox clear">
3.3文章尾
</div>
<div class="banner"><center><script type="text/javascript">book_bottom();</script></center></div>
3.4标题尾
</h1>
</div>
<div class="banner"><center><script type="text/javascript">