如何打造你的个人数字图书馆:开源小说下载器终极指南
【免费下载链接】novel-downloader一个可扩展的通用型小说下载器。项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader
你是否曾经遇到过这样的情况:收藏多年的小说突然无法访问,心爱的作品在网络上消失得无影无踪?在这个信息爆炸的时代,数字内容的脆弱性常常让我们措手不及。今天,我将为你介绍一款能够永久保存网络小说内容的开源神器——novel-downloader,它就像给你的数字阅读生活上了一道保险。
📚 你的数字阅读守护者
novel-downloader是一个功能强大的开源小说下载工具,它能够从200多个国内外小说网站智能抓取内容,将在线小说转换为本地的TXT和EPUB格式文件。无论你是想备份付费章节、保存稀有资源,还是为了离线阅读,这个工具都能成为你数字阅读生活的得力助手。
想象一下,当你在地铁上、在飞机上,或者在没有网络的山间小屋,依然能够随心所欲地阅读你收藏的所有小说。这就是novel-downloader带给你的自由。
novel-downloader的批量下载界面,实时显示下载进度和章节状态
🚀 五分钟快速上手
第一步:安装浏览器扩展
首先,你需要在浏览器中安装一个脚本管理器。我推荐以下选择:
- 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文件,将其拖拽到已安装脚本管理器的浏览器中即可完成安装。
第三步:开始使用
安装完成后,访问任意支持的小说网站,你会发现网页右上角出现了一个下载图标。点击这个图标,工具就会自动分析网页结构并开始下载。
实用小贴士:
- 对于大型小说(超过100章),建议分批下载
- 下载过程中可以继续浏览其他网页
- 右下角的进度条会实时显示下载状态
🔍 智能识别系统:应对各种网站挑战
不同的网站有不同的结构和反爬机制,novel-downloader通过三层智能识别系统来应对这些挑战:
| 识别层级 | 技术原理 | 处理速度 | 适用场景 |
|---|---|---|---|
| 第一层:结构分析 | 分析网页DOM结构,识别章节列表和内容区域 | ⚡ 极快 | 标准小说网站 |
| 第二层:图片文字解码 | 通过文件名映射和哈希值识别图片文字 | ⚡ 快速 | 图片加密网站 |
| 第三层:OCR识别 | 使用PaddleOCR模型进行光学字符识别 | 🐢 较慢 | 复杂图片加密 |
图片文字处理流程
对于将文字替换为图片的网站,novel-downloader采用了一套完整的解码方案:
- 文件名快速匹配→ 2.哈希值精确识别→ 3.OCR智能识别
工具能够正确处理图文混合的小说章节,保留插图和特效图片
🎯 个性化下载策略
不是所有时候都需要下载整本小说。novel-downloader提供了灵活的筛选功能,让你可以精确控制下载内容:
按需求筛选章节
// 只下载前50章 function chapterFilter(chapter) { return chapter.chapterNumber <= 50; } // 只下载特定分卷 function chapterFilter(chapter) { return chapter.sectionNumber === 2; } // 只下载包含特定关键词的章节 function chapterFilter(chapter) { return chapter.chapterName.includes("战斗"); }自定义输出格式
你可以完全控制下载文件的格式和样式:
const saveOptions = { // 自定义章节命名格式 getchapterName: (chapter) => { return `第${chapter.chapterNumber}章 ${chapter.chapterName || ''}`; }, // 自定义段落样式 mainStyleText: `p { text-indent: 2em; line-height: 1.8; font-family: "思源宋体", serif; }`, // 清理多余空行 genChapterEpub: (contentXHTML) => { return contentXHTML.replaceAll("<p><br /></p>", "") .replaceAll("<p><br/></p>", ""); } };🏗️ 项目架构解析
novel-downloader采用模块化设计,使得扩展新网站支持变得非常简单。让我们看看它的核心架构:
核心模块结构
src/ ├── main/ # 核心业务逻辑 │ ├── Book.ts # 书籍处理类 │ ├── Chapter.ts # 章节处理类 │ └── main.ts # 主程序入口 ├── lib/ # 工具库 │ ├── decoders/ # 解码器(图片文字识别) │ ├── http.ts # 网络请求模块 │ └── rule.ts # 规则引擎 ├── rules/ # 网站规则库 │ ├── onePage/ # 单页式网站规则 │ ├── twoPage/ # 两页式网站规则 │ └── special/ # 特殊网站规则 └── save/ # 保存模块 ├── epub.ts # EPUB生成器 └── txt.ts # TXT生成器规则系统工作原理
每个网站的支持都通过一个独立的规则文件实现。规则文件需要定义两个核心方法:
// 示例:简单的网站规则 export default class MySiteRule extends BaseRuleClass { siteName = "我的小说网站"; urlPattern = /https:\/\/www\.mysite\.com\/novel\/.+/; async bookParse() { // 解析书籍信息 return { bookname: document.title, author: document.querySelector('.author')?.textContent, introduction: document.querySelector('.intro')?.textContent }; } async chapterParse(chapterUrl, chapterName) { // 解析章节内容 const doc = await this.getHtmlDOM(chapterUrl); const content = doc.querySelector('.content'); return { chapterName, contentRaw: content, contentText: content?.textContent }; } }📊 支持网站类型对比
novel-downloader支持200多个小说网站,涵盖了各种类型和地区:
| 网站类型 | 代表平台 | 支持状态 | 特殊说明 |
|---|---|---|---|
| 主流中文平台 | 起点、晋江、番茄 | ✅ 完全支持 | 支持VIP章节,需登录账户 |
| 轻小说平台 | SF轻小说、轻之文库 | ✅ 完全支持 | 部分平台仅支持公共章节 |
| 日本小说平台 | カクヨム、小説家になろう | ✅ 完全支持 | 日文编码自动处理 |
| 图片加密网站 | 西瓜书屋、海棠文化 | ✅ 完全支持 | 使用三层解码方案 |
| 特殊格式网站 | Lofter、Pixiv | ✅ 条件支持 | 可能跳过视频内容 |
即使是包含复杂对话和心理描写的章节,工具也能完整保留原文结构
🛠️ 高级功能深度解析
1. 并发下载控制
novel-downloader支持智能的并发控制,避免对网站服务器造成过大压力:
// 在网站规则中设置 concurrencyLimit: 3, // 同时下载3个章节 sleepTime: 1000, // 每个请求间隔1秒 maxSleepTime: 5000 // 最大间隔5秒2. 自定义请求头
对于需要特殊认证的网站,可以自定义请求头:
headers: { 'User-Agent': 'Mozilla/5.0...', 'Referer': 'https://www.example.com/', 'Cookie': 'your_cookie_here' }3. 错误重试机制
内置智能重试系统,自动处理网络波动和临时错误:
- 首次失败:等待2秒后重试
- 第二次失败:等待5秒后重试
- 第三次失败:标记为失败章节
🚨 实战问题解决方案
问题1:下载速度过慢
解决方案:
- 检查网络连接稳定性
- 适当降低并行下载线程数
- 对于反爬严格的网站,增加下载间隔时间
- 使用代理服务器(如果需要)
问题2:某些章节内容异常
排查步骤:
- 启用调试模式查看详细日志
- 检查是否有字体匹配问题
- 确认网站是否有特殊反爬机制
- 查看是否有图片文字需要OCR识别
问题3:付费章节无法下载
必要条件:
- 确保已登录相应网站账户
- 确认已购买或订阅相关章节
- 检查是否有有效的token配置
🔧 开发者扩展指南
如果你发现某个小说网站不在支持列表中,可以轻松地为其添加支持:
创建新规则文件
在src/rules/目录下创建新的规则文件:
import { BaseRuleClass } from "../../rules"; export default class NewSiteRule extends BaseRuleClass { siteName = "新小说网站"; urlPattern = /https:\/\/www\.newsite\.com\/book\/.+/; async bookParse() { // 实现书籍信息解析逻辑 } async chapterParse(chapterUrl, chapterName) { // 实现章节内容解析逻辑 } }注册新规则
在src/router/download.ts文件中添加相应的选择规则,并在header.json的match字段添加URL匹配规则。
💡 最佳实践建议
1. 定期备份重要作品
即使你现在不打算阅读某部小说,如果它对你很重要,建议提前下载备份。网络内容随时可能消失。
2. 合理设置下载参数
- 对于热门网站:使用默认设置即可
- 对于反爬严格的网站:降低并发数,增加间隔时间
- 对于图片加密网站:启用OCR功能
3. 注意版权和道德
- 仅下载你拥有阅读权限的内容
- 尊重作者的劳动成果
- 下载的内容仅供个人阅读使用
- 不要将下载的内容用于商业用途或大规模分发
4. 保持工具更新
定期更新novel-downloader,以获取最新的网站支持规则和功能改进。
🎉 开始你的数字藏书之旅
现在,你已经掌握了novel-downloader的所有核心功能。这款工具不仅仅是一个下载器,更是你数字阅读生活的守护者。它让你真正拥有自己喜欢的内容,不再受网络波动、平台关闭或内容下架的影响。
记住,在数字时代,真正拥有内容的方式就是将它保存在本地。novel-downloader为你提供了这个可能——让那些精彩的故事永远陪伴在你身边。
立即行动:
- 安装脚本管理器
- 获取并安装novel-downloader脚本
- 访问你最喜欢的小说网站
- 点击下载图标,开始建立你的个人数字图书馆
你的数字藏书之旅,现在就开始吧!
项目资源:
- 官方文档:README.md
- 核心源码:src/
- 规则库:src/rules/
- 配置说明:package.json
小提示:如果你在使用过程中遇到任何问题,或者有新的网站支持需求,欢迎在项目支持页面提交issue。开源社区的贡献者们会及时为你提供帮助!
下载的小说章节保持原始排版,适合在各种阅读器上阅读
【免费下载链接】novel-downloader一个可扩展的通用型小说下载器。项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考