如何快速把网页小说变成电子书:小说下载器 10 分钟新手完整指南
【免费下载链接】novel-downloader一个可扩展的通用型小说下载器。项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader
出差没网,电纸书里的书单却空着。**novel-downloader(小说下载器)**是一枚浏览器脚本,能把 100 多个小说网站的章节批量抓取下来,一键导出 TXT 和 EPUB 文件,整本书从此离线可读。
小说下载器是什么:一个跑在浏览器里的脚本
先说结论:它不是桌面软件,而是油猴脚本(UserScript)。
装好脚本管理器后,你打开受支持的小说网站,脚本自动运行,页面右上角多出一个下载图标。你在网站上登录过什么账号、买过什么章节,它都原样沿用,不需要任何额外配置。
网文入 V 后下架、整站关停的事并不少见。趁作品还在线,把章节完整搬进本地硬盘,就是它要解决的问题。
那为什么不让它做成独立程序?对比一下就清楚了:
| 对比维度 | 小说下载器(油猴脚本) | 桌面下载工具 |
|---|---|---|
| 运行形态 | 注入当前浏览器页面,无独立进程 | 单独程序,部分要另开浏览器 |
| 账号状态 | 直接沿用浏览器里已登录的站点账号 | 常需手动粘贴 Cookie |
| 反爬暴露度 | 与浏览器真实指纹一致,不易被标记 | 独立指纹,容易被限速 |
| 更新方式 | 换一份新脚本文件即可 | 重装或下载升级包 |
十分钟跑通首次网页小说批量下载
第一步:给浏览器装脚本管理器
脚本需要一个运行环境,三选一:
- Tampermonkey:功能全,资料多;
- Violentmonkey:开源轻量;
- Greasemonkey:Firefox 经典选项。
第二步:构建并导入脚本
git clone https://gitcode.com/gh_mirrors/no/novel-downloader cd novel-downloader yarn install yarn build完成后,把dist目录里的bundle.user.js拖进脚本管理器的页面,弹窗询问权限时点允许即可。
第三步:打开目录页,点下载图标
打开任意受支持网站的书籍目录页,右上角会出现下载图标,点它。
脚本把书名、封面、简介和分卷章节整理成清晰结构,确认章节列表完整后再开始下载。
下载期间右下角有进度条,按 F12 能看实时日志。脚本会播放一段无声音频,防止浏览器在后台休眠标签页,属正常现象。
图中底部是开发者控制台,脚本正逐章请求正文;全部完成后,浏览器会自动保存 TXT 和 EPUB 两个文件。
下载流水线内部:从目录到电子书的四步
点下图标后,一本书会经过四道工序,像一条传送带:
| 顺序 | 步骤 | 做什么 |
|---|---|---|
| 1 | 目录解析(bookParse) | 读目录页,整理书名、作者、简介与分卷结构 |
| 2 | 章节抓取(chapterParse) | 逐章请求正文,未登录未购买的付费章节直接跳过 |
| 3 | 内容清洗(cleanDOM) | 去掉广告、导航和脚本,只留正文与插图 |
| 4 | 打包输出 | 生成 TXT 与 EPUB,插图内嵌,流式压缩写出 |
一百多个站点并不是一站一写。项目按页面结构把规则归成五类模板,全部收在站点规则目录src/rules/下:
| 模板 | 页面结构 | 代表站点 |
|---|---|---|
| onePage | 整份目录一页放下 | 笔趣阁系列、UU 看书 |
| twoPage | 目录跨多页 | 轻小说文库、18 看书 |
| special | 平台逻辑需单独处理 | 起点、晋江、pixiv |
| biquge | 笔趣阁家族变体 | 各类笔趣阁改版站 |
| mbtxt | 目录与正文混杂 | 全书斋 |
图文站点三层解码:先快后准
有的网站(如西瓜书屋)把正文文字直接换成图片。脚本的对策像查案:先翻花名册,再验指纹,最后才请人工誊写——三层漏斗,逐层加码。
| 层级 | 命中方式 | 特点 |
|---|---|---|
| 1 | 按图片文件名查表取字 | 最快,依赖匹配表覆盖 |
| 2 | 算图片哈希,比对远程映射表 | 较快,内容相同即命中 |
| 3 | PaddleOCR 中文模型识别 | 最慢但最准 |
匹配表自动拉取并缓存在脚本管理器本地存储,OCR 模型首次使用时下载,之后本地复用。三层全部失败的字符会被跳过,图文站建议拿 HTML 版输出核对一遍。
图文混排的章节里,图片和文字会被一起写进 EPUB,读起来和原站基本一致。
自定义字体加密的破解
另一类常见反爬手段:正文用自定义字体渲染,直接抓下来全是乱码。
脚本会自动下载字体文件、建立字符映射,还原真实文字。晋江、番茄可能要求你手动配合一次字体匹配,按控制台里[jjwxc-font]、[fanqie-font]开头的提示操作即可。
三个自定义入口:把小说下载器调成你的习惯
⚠️ 以下入口都必须在点击下载按钮之前注入,否则不生效。
入口一:chapterFilter,只下你要的章节。返回 true 的章节才进下载队列:
function chapterFilter(chapter) { return chapter.chapterNumber <= 50; }只想收某一卷,把条件换成sectionNumber === 1就行。
入口二:saveOptions,控制输出格式与样式。章节标题写法、正文缩进行距都能改:
window.saveOptions = { getchapterName: (c) => `第${c.chapterNumber}章 ${c.chapterName}`, mainStyleText: "p { text-indent: 2em; line-height: 1.6; }", };入口三:customFinishCallback,下载完自动收尾。定义一个同名的全局函数,下载结束后脚本会调用它,关标签页、弹通知都可以。
TXT 成品保留分卷、章节层级,任何文本编辑器或阅读软件都能打开。
问题速查表:下载不顺时先看这里
| 现象 | 原因 | 解决 |
|---|---|---|
| 右上角没有下载图标 | 单页应用未初始化 | 按 F5 强制刷新页面 |
| 付费章节全部跳过 | 未登录或未购买 | 登录站点账号并确认已购买 |
| 下载速度太慢 | 网站反爬限速 | 在设置里调高并行数、调整下载间隔 |
| 正文出现乱码 | 自定义字体未完成映射 | 按控制台提示完成一次性字体匹配 |
| 图文站点文字空白 | 三层解码均失败 | 优先使用 HTML 版成品核对 |
| 长时间无文件产出 | 脚本卡住或报错 | 开启调试模式,提交包内debug.log |
如果下载压根没产出文件,打开设置里的测试视图,复制日志选项卡的内容另行保存,随反馈一起提交。
支持站点与贡献路径
| 站点类型 | 代表站点 |
|---|---|
| 国内原创平台 | 起点、晋江、番茄、七猫、纵横 |
| 创作社区 | 长佩、书耽、Lofter、pixiv |
| 日本小说平台 | 小説家になろう、カクヨム、ハーメルン |
| 转载与免费站 | 笔趣阁系列、UU 看书、69 书吧、轻小说文库 |
发现缺了你想下的站点?三步就能补上:
- 参考
src/rules/下同类模板,继承BaseRuleClass,实现bookParse(解析目录)和chapterParse(解析正文)两个方法; - 在
src/router/download.ts登记域名与规则的对应关系; - 运行
yarn build编译,提交改动等待合并。
下次遇到喜欢的作品,别只存链接了。 批量下载一次,导出,书就是你的。 把网文变成一份可以随时握在手里的离线资产。
【免费下载链接】novel-downloader一个可扩展的通用型小说下载器。项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考