如何用开源工具轻松保存100+小说网站内容,打造个人数字图书馆
【免费下载链接】novel-downloader一个可扩展的通用型小说下载器。项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader
你是否曾经遇到过这样的情况:熬夜追更的小说突然被网站下架,付费购买的章节无法离线阅读,或者网络不稳定导致阅读体验糟糕?在数字阅读时代,这些痛点困扰着无数读者。novel-downloader 正是为解决这些问题而生的开源小说下载工具,它能从超过100个小说网站智能抓取内容,自动转换为 TXT 和 EPUB 格式,让你真正拥有自己的数字图书馆。
🔍 为什么你需要一个小说下载工具?
在瞬息万变的网络环境中,优质内容随时可能消失。许多优秀的小说作品因为网站关闭、内容下架或版权变动而无法访问。更令人沮丧的是,即使你已经付费订阅了某些章节,一旦网站服务器出现问题或账号异常,这些内容就可能永远消失。
novel-downloader 的核心价值在于永久保存——无论是免费章节还是付费内容,只要你有访问权限,它都能帮你保存下来。这个工具不仅仅是一个简单的下载器,更是数字时代的知识守护者。
🚀 三分钟快速上手:从安装到下载
第一步:安装脚本管理器
novel-downloader 是一个油猴脚本(UserScript),需要在浏览器中先安装脚本管理器。推荐的选择有:
- Tampermonkey:最流行的脚本管理器,支持 Chrome、Firefox、Edge 等主流浏览器
- Violentmonkey:开源免费的替代选择,功能同样强大
- Greasemonkey:Firefox 专用版本
第二步:获取并安装脚本
git clone https://gitcode.com/gh_mirrors/no/novel-downloader cd novel-downloader yarn install yarn build构建完成后,在项目的dist目录中找到bundle.user.js文件,直接拖拽到你的脚本管理器安装即可。整个过程简单快捷,无需复杂的配置。
第三步:开始你的第一次下载
安装完成后,访问任意支持的小说网站(如起点中文网、晋江文学城等),当你打开小说目录页时,网页右上角会出现一个下载图标。点击这个图标,工具就会开始智能抓取小说内容。
novel-downloader后台抓包与解析界面,展示工具如何智能提取小说章节链接
下载过程中,页面右下角会显示进度条,你也可以按下 F12 打开开发者工具,在控制台查看详细状态。对于长篇小说,下载可能需要一些时间,请耐心等待。
💪 核心技术解析:智能网站识别与内容提取
模块化规则引擎设计
novel-downloader 的核心优势在于其灵活的规则系统。针对不同网站的不同页面结构,它采用了多种解析策略:
- 单页模式:适用于章节列表在同一页面的网站,如起点、晋江等主流平台
- 多页模式:适用于章节分页显示的网站,能自动翻页抓取全部内容
- 特殊处理:针对有特殊加密或反爬机制的网站,如字体加密、图片文字等
你可以在项目的src/rules/目录下看到完整的规则实现,包括onePage/、twoPage/、special/等不同目录,每个文件对应一个网站的解析逻辑。
三级图片文字识别技术
部分网站为了防爬虫,会将文字替换为图片。novel-downloader 采用了一套巧妙的三级解码方案:
- 文件名映射:首先尝试根据图片文件名直接匹配对应的文字,这是最快的方法
- 哈希匹配:如果文件名匹配不到,就下载图片并计算哈希值来匹配,准确率较高
- OCR识别:前两种方法都失败时,才会使用OCR(光学字符识别)来识别图片中的文字
这种分层处理策略既保证了效率,又确保了识别的准确性。首次使用OCR功能时,工具会自动下载PaddleOCR中文识别模型文件。
novel-downloader解析的小说正文页,展示工具提取的完整文本内容和排版格式
字体加密自动处理
晋江文学城等网站使用自定义字体加密文字显示。脚本会自动下载字体文件并建立映射关系,确保下载的内容文字正确显示。如果遇到乱码问题,可以在设置中启用调试模式,按照提示信息提交字体匹配请求。
📋 支持网站全览:覆盖主流与小众平台
novel-downloader 支持超过100个小说网站,涵盖了从主流原创平台到小众转载网站的广泛范围:
主流原创平台支持
- 起点中文网、晋江文学城:✅ 公共章节 ✅ 付费章节(需登录)
- 七猫中文网、番茄小说:✅ 公共章节 ✅ 付费章节
- 长佩文学、息壤中文网:✅ 公共章节 ✅ 付费章节
国外平台支持
- カクヨム(日本)、小説家になろう:✅ 公共章节
- pixiv小说、Lofter:✅ 公共章节
转载网站支持
- 笔趣阁系列、UU看书网:✅ 公共章节
- 和图书、轻小说文库:✅ 公共章节
novel-downloader解析的小说封面与目录页,展示完整的作品结构和章节导航
🛠️ 高级功能:定制化下载体验
自定义章节筛选
如果你只想下载小说的特定部分,可以在下载前定义筛选函数:
// 只下载前50章 function chapterFilter(chapter) { return chapter.chapterNumber <= 50; } // 只下载包含特定关键词的章节 function chapterFilter(chapter) { return chapter.chapterName.includes("冒险"); } // 只下载第一卷内容 function chapterFilter(chapter) { return chapter.sectionNumber === 1; }个性化输出格式控制
你可以完全控制生成文件的样式和格式:
const saveOptions = { // 自定义章节标题格式 getchapterName: (chapter) => { return `第${chapter.chapterNumber}章 ${chapter.chapterName || ""}`; }, // 自定义CSS样式 mainStyleText: `p { text-indent: 2em; line-height: 1.6; margin: 0.5em 0; }`, // 删除EPUB中的空行 genChapterEpub: (contentXHTML) => { return contentXHTML.replaceAll("<p><br /></p>", "") .replaceAll("<p><br/></p>", ""); } };自动注入配置脚本
如果你总是使用相同的自定义设置,可以创建一个独立的用户脚本自动注入配置:
// ==UserScript== // @name Noveldownloader 自定义配置 // @namespace http://tampermonkey.net/ // @version 1.0 // @description 自动注入 novel-downloader 配置 // @author 你的名字 // @match *://*/* // @grant none // ==/UserScript== (function() { "use strict"; // 章节筛选 function chapterFilter(chapter) { return chapter.chapterNumber <= 100; } // 保存选项 const saveOptions = { getchapterName: (chapter) => { return `第${chapter.chapterNumber}章 ${chapter.chapterName || ""}`; } }; window.chapterFilter = chapterFilter; window.saveOptions = saveOptions; })();novel-downloader解析的小说正文+插图页,展示工具对带图片小说内容的处理能力
🔧 开发者扩展指南:为项目贡献新规则
如果你想为 novel-downloader 添加对新网站的支持,可以按照以下步骤操作:
创建新规则文件
在src/rules/目录下创建新的规则文件:
import { BaseRuleClass } from "../lib/rule"; export default class NewSite extends BaseRuleClass { public siteName = "new-site"; public urlPattern = /https:\/\/www\.newsite\.com\/novel\/.+/; public async bookParse() { // 实现书籍信息提取逻辑 } public async chapterParse() { // 实现章节内容提取逻辑 } }注册新规则
在src/router/download.ts中添加新规则的选择逻辑,并在header.json文件的match字段中添加相应的 URL 模式。
测试与构建
yarn lint # 代码检查 yarn build # 构建脚本 yarn test # 运行测试💡 实用技巧与最佳实践
提高下载成功率
- 网络环境:使用稳定的网络连接,避免在下载过程中断开
- 登录状态:下载付费章节前确保已登录并购买
- 反爬处理:如遇到频繁失败,尝试降低并行下载线程数
- 分批下载:对于超长篇小说,建议分卷或分批次下载
性能优化建议
- 调整并行下载线程数(默认3个),找到适合当前网站的最佳值
- 使用章节筛选功能只下载需要的部分
- 定期清理浏览器缓存,保持脚本运行流畅
- 关注项目更新,及时获取最新的网站支持和bug修复
安全注意事项
- 仅下载你已购买或有权阅读的内容
- 尊重作者版权,合理使用下载功能
- 不要在公共场合分享下载的付费内容
- 定期备份重要的下载文件
🌟 开启你的离线阅读之旅
novel-downloader 不仅仅是一个下载工具,更是数字阅读时代的知识守护者。在信息易逝的今天,它帮助我们保存那些珍贵的文字,让优质内容不会因为网站关闭或内容下架而彻底消失。
无论你是想要离线阅读方便通勤,还是想要收藏心爱的小说,或是作为技术爱好者想要研究网页解析技术,novel-downloader 都能满足你的需求。它的开源特性意味着你可以自由定制、贡献代码,与全球开发者一起完善这个工具。
现在就安装 novel-downloader,开始你的离线阅读之旅吧!如果你在使用过程中遇到问题或有新功能建议,欢迎到项目页面提交反馈,让我们一起为保存互联网上的优秀小说作品贡献力量。
novel-downloader生成的纯文本输出文件,展示工具对小说内容的格式化存储能力
【免费下载链接】novel-downloader一个可扩展的通用型小说下载器。项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考