如何用一款开源工具永久保存200+小说网站的内容?
如何用一款开源工具永久保存200+小说网站的内容?
【免费下载链接】novel-downloader一个可扩展的通用型小说下载器。项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader
在数字阅读时代,最令人不安的体验莫过于某天打开收藏夹,发现心爱的小说页面变成了"404 Not Found"。无论是因为版权下架、平台关闭,还是作者删文,那些曾经陪伴我们度过无数夜晚的故事就这样无声无息地消失了。
novel-downloader 正是为解决这一痛点而生的开源工具。作为一款可扩展的通用型小说下载器,它能够从200多个小说网站自动抓取内容,将在线小说转换为本地文件,让你永远不用担心"404"的困扰。无论是起点中文网的热门连载,还是晋江文学城的经典作品,亦或是日本カクヨム平台的轻小说,这款工具都能帮你轻松保存。
🎭 你的数字阅读保险箱
想象一下这样的场景:你在某个小众网站发现了一部精彩的小说,但网站服务器不稳定,经常无法访问。或者你订阅了付费章节,却担心平台哪天突然关闭。novel-downloader 就像为你的数字阅读生活买了一份保险。
它能为你做什么:
- 批量下载整本小说:从目录页一键抓取所有章节
- 智能识别网站结构:自动适配不同网站的特殊布局
- 处理复杂反爬机制:包括图片文字、加密字体等特殊保护
- 生成多种格式:同时输出TXT和EPUB两种格式文件
- 保留原始排版:尽量保持原文的段落和格式
novel-downloader 在浏览器中运行,实时显示下载进度和章节状态
🚀 三分钟快速上手指南
第一步:安装基础环境
首先确保你的浏览器已经安装了脚本管理器。目前主流的浏览器脚本管理器有:
- Tampermonkey(推荐)
- Violentmonkey
- Greasemonkey
第二步:获取novel-downloader脚本
打开终端,执行以下命令获取最新版本:
git clone https://gitcode.com/gh_mirrors/no/novel-downloader cd novel-downloader yarn install yarn build构建完成后,在dist/目录下找到bundle.user.js文件,将其拖拽到已安装脚本管理器的浏览器中即可完成安装。
第三步:开始使用
安装完成后,访问任意支持的小说网站(如起点中文网、晋江文学城等),你会发现网页右上角出现了一个下载图标。点击这个图标,工具就会自动开始工作。
小贴士:如果下载的章节较多,可能需要一些时间。你可以通过右下角的进度条实时查看下载进度,或者按下F12打开开发者工具的控制台查看详细状态。
🛡️ 应对网站反爬的智能策略
许多小说网站为了保护内容,采用了各种反爬虫技术。novel-downloader 通过三层解码方案来应对这些挑战:
第一层:文件名快速匹配
当网站将文字替换为图片时,工具首先尝试通过图片文件名直接匹配对应的文字。这种方法速度最快,适用于大部分常规情况。
第二层:哈希值精准识别
如果文件名匹配失败,工具会下载图片并计算其哈希值,通过预先建立的哈希-文字映射表来识别内容。这种方法准确率较高,速度也相当可观。
第三层:OCR光学字符识别
当前两种方法都无法识别时,工具会调用PaddleOCR中文识别模型进行光学字符识别。这是最准确的方法,但处理速度相对较慢。
工具能够正确处理图文混合的小说章节,保留插图和特效图片
🎯 个性化下载:只获取你需要的
不是所有时候都需要下载整本小说。novel-downloader 提供了灵活的筛选功能,让你可以精确控制下载内容:
按章节范围筛选
// 只下载前50章 function chapterFilter(chapter) { return chapter.chapterNumber <= 50; }按章节名称筛选
// 只下载标题包含"战斗"的章节 function chapterFilter(chapter) { return chapter.chapterName && chapter.chapterName.includes("战斗"); }按分卷筛选
// 只下载第一卷的内容 function chapterFilter(chapter) { return chapter.sectionNumber === 1; }📁 输出格式深度定制
下载完成后,你可以获得两种格式的文件:TXT和EPUB。但novel-downloader的功能远不止于此,它还允许你深度定制输出格式:
自定义章节命名
const saveOptions = { getchapterName: (chapter) => { return `第${chapter.chapterNumber}章 ${chapter.chapterName || ''}`; } };自定义段落样式
const saveOptions = { mainStyleText: `p { text-indent: 2em; line-height: 1.6; margin: 0.5em 0; font-family: "思源宋体", serif; }` };批量处理空行
const saveOptions = { genChapterEpub: (contentXHTML) => { return contentXHTML.replaceAll("<p><br /></p>", "") .replaceAll("<p><br/></p>", ""); } };下载的小说章节保持原始排版,适合在各种阅读器上阅读
🔧 特殊网站的特殊处理
对于一些需要登录或特殊权限的网站,novel-downloader 也提供了相应的解决方案:
晋江文学城的Token配置
晋江文学城需要特定的token才能下载VIP章节。你可以通过以下方式获取:
- 在任意晋江小说页面打开设置,点击"获取token"按钮
- 按照提示输入账号密码登录
- 工具会自动获取并保存token
或者,你也可以通过抓包工具自行获取token,然后通过用户脚本注入到页面中。
付费章节下载注意事项
重要提醒:下载付费章节前,请确保:
- 已登录相应网站的账户
- 已购买或订阅了相关章节
- 遵守网站的使用条款和版权规定
未登录或未购买的付费章节在下载时会被自动跳过。
🚨 常见问题与解决方案
下载速度过慢怎么办?
- 检查网络连接是否稳定
- 适当调整并行下载线程数(默认为3)
- 对于反爬较严的网站,可以增加下载间隔时间
下载过程中卡住了?
- 按下F12打开开发者工具
- 切换到控制台(console)标签页
- 查看是否有错误信息输出
- 在设置中启用调试模式,获取更详细的日志
某些章节内容异常?
- 可能是网站使用了特殊的字体加密
- 尝试在设置中启用测试视图
- 查看日志中是否有字体匹配相关的提示信息
- 按照提示提交字体匹配信息到相关渠道
工具在某个网站不工作?
- 确认该网站是否在支持列表中
- 检查是否有网站更新导致规则失效
- 在项目支持页面提交issue,附上详细的问题描述和日志
🌟 高级技巧:自动化批量下载
如果你需要批量下载多本小说,可以通过简单的脚本实现自动化:
// 批量打开多个小说页面并触发下载 const novelUrls = [ 'https://www.example.com/novel/123', 'https://www.example.com/novel/456', // 更多URL... ]; novelUrls.forEach((url, index) => { setTimeout(() => { window.open(url); // 等待页面加载后自动点击下载按钮 setTimeout(() => { const downloadBtn = document.querySelector('.novel-downloader-btn'); if (downloadBtn) downloadBtn.click(); }, 5000); }, index * 10000); // 每10秒处理一本 });📊 支持的网站类型概览
novel-downloader 目前支持200多个小说网站,涵盖了多种类型:
| 网站类型 | 代表平台 | 支持状态 | 特殊说明 |
|---|---|---|---|
| 主流中文平台 | 起点、晋江、番茄 | ✅ 完全支持 | 支持VIP章节,需登录账户 |
| 轻小说平台 | SF轻小说、轻之文库 | ✅ 完全支持 | 部分平台仅支持公共章节 |
| 日本小说平台 | カクヨム、小説家になろう | ✅ 完全支持 | 日文编码自动处理 |
| 图片加密网站 | 西瓜书屋、海棠文化 | ✅ 完全支持 | 使用三层解码方案 |
| 特殊格式网站 | Lofter、Pixiv | ✅ 条件支持 | 可能跳过视频内容 |
即使是包含复杂对话和心理描写的章节,工具也能完整保留原文结构
🛠️ 开发者扩展指南
如果你发现某个小说网站不在支持列表中,可以轻松地为其添加支持。novel-downloader 采用模块化设计,每个网站的规则都是独立的:
创建新规则文件
在src/rules/目录下创建新的规则文件,继承BaseRuleClass类:
export default { siteName: 'your-site-name', urlPattern: /https:\/\/www\.your-site\.com\/novel\/.+/, bookParse: async () => { // 解析书籍信息 return { bookUrl: window.location.href, bookname: document.title, author: document.querySelector('.author')?.textContent, }; }, chapterParse: async (chapterUrl, chapterName, isVIP, isPaid) => { // 解析章节内容 return { chapterName, contentRaw: document.querySelector('.content'), contentText: document.querySelector('.content')?.textContent, }; } };注册新规则
在src/router/download.ts文件中添加相应的选择规则,并在header.json的match字段添加URL匹配规则。
💡 最佳实践建议
定期备份重要作品
即使你现在不打算阅读某部小说,如果它对你很重要,建议提前下载备份。网络内容随时可能消失。
合理设置下载参数
对于反爬较严的网站,适当降低并行下载线程数,增加下载间隔时间,避免触发网站的防护机制。
注意版权和道德
- 仅下载你拥有阅读权限的内容
- 尊重作者的劳动成果
- 下载的内容仅供个人阅读使用
- 不要将下载的内容用于商业用途或大规模分发
保持工具更新
定期更新novel-downloader,以获取最新的网站支持规则和功能改进。
🎉 开始你的数字藏书之旅
现在,你已经了解了novel-downloader的所有核心功能。无论是为了备份心爱的小说,还是为了在没有网络的环境下阅读,这款工具都能成为你数字阅读生活的好帮手。
记住,在信息时代,真正拥有内容的方式就是将它保存在本地。novel-downloader 为你提供了这个可能——让那些精彩的故事不再因为网络波动或平台关闭而消失,让你的数字图书馆真正属于你自己。
开始使用novel-downloader,建立属于你自己的永久数字藏书库吧!
【免费下载链接】novel-downloader一个可扩展的通用型小说下载器。项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
