如何用novel-downloader一键保存100+小说网站,打造个人离线书库
【免费下载链接】novel-downloader一个可扩展的通用型小说下载器。项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader
在数字阅读时代,你是否曾遇到过这样的困扰:追更到一半的小说突然网站404、网络信号差无法继续阅读、或是想离线保存心爱作品却无从下手?novel-downloader正是为解决这些问题而生的开源工具,它能帮你将100多个小说网站的内容批量下载为TXT和EPUB格式,建立个人专属的离线书库。
为什么需要小说下载工具?
网络阅读的三大痛点
- 内容消失风险:小说网站关闭、作品下架等情况时有发生,热门作品可能一夜之间消失无踪
- 阅读体验受限:网络不稳定、广告干扰、网站排版混乱影响阅读体验
- 平台依赖性强:不同平台需要不同账号,阅读进度无法跨设备同步
novel-downloader的解决方案
这款基于TypeScript开发的油猴脚本,通过浏览器扩展方式工作,完全免费开源。它不仅能解决上述问题,还具备以下核心优势:
- 广泛支持:覆盖起点、晋江、刺猬猫等100+国内外小说平台
- 智能处理:自动识别页面结构,清理广告和干扰元素
- 格式友好:生成TXT和EPUB两种主流格式,兼容各类阅读器
- 高度可扩展:模块化设计,开发者可轻松添加新网站支持
核心技术:三层解码系统应对网站反爬
面对网站的各种反爬措施,novel-downloader采用了一套完整的技术解决方案:
1. 图片文字识别系统
部分网站将文字替换为图片防止复制,脚本采用三级解码方案:
- 文件名映射:通过图片文件名快速匹配文字
- 哈希匹配:计算图片哈希值进行精确识别
- OCR识别:使用PaddleOCR模型进行光学字符识别
2. 字体加密破解
晋江文学城等平台使用自定义字体加密,脚本会自动下载字体文件并建立映射关系,确保文字正确显示。相关解码模块位于字体解码源码。
3. 付费章节支持
对于需要登录的付费内容,脚本会使用你的登录状态进行访问。只需确保已登录网站账户并购买了相关章节,即可正常下载。
安装与使用:三步开启离线阅读
第一步:安装脚本管理器
novel-downloader是油猴脚本,需要先在浏览器安装脚本管理器:
- Chrome/Edge:推荐Tampermonkey
- Firefox:推荐Greasemonkey
- 跨浏览器:Violentmonkey(开源免费)
第二步:获取并安装脚本
从源码构建脚本文件:
git clone https://gitcode.com/gh_mirrors/no/novel-downloader cd novel-downloader yarn install yarn build构建完成后,在dist目录中找到bundle.user.js文件,拖拽到浏览器安装即可。
第三步:开始使用
访问支持的小说网站时,网页右上角会出现下载图标。点击图标后,右下角会显示进度条,按下F12可查看详细状态。下载完成后自动生成TXT和EPUB文件。
支持网站大全:主流平台全覆盖
novel-downloader支持的小说网站数量庞大,以下是部分代表性平台:
| 平台类型 | 代表网站 | 特色功能 |
|---|---|---|
| 国内主流 | 起点中文网、晋江文学城、七猫中文网 | 付费章节支持、字体加密处理 |
| 国外平台 | カクヨム(日本)、pixiv小说、Lofter | 多语言支持、特殊编码处理 |
| 转载网站 | 笔趣阁系列、UU看书网、和图书 | 免费资源、海量内容 |
| 小众平台 | 息壤中文网、有毒小说网、独阅读 | 特色内容、特殊处理 |
完整支持列表可在项目规则目录中查看,包含100多个网站的规则文件。从主流大站到小众平台,都能完美支持。
高级功能:个性化定制你的阅读体验
章节筛选功能
只想下载特定章节?在开始下载前,按下F12打开开发者工具,定义chapterFilter函数:
// 只下载前50章 function chapterFilter(chapter) { return chapter.chapterNumber <= 50; } // 只下载包含特定关键词的章节 function chapterFilter(chapter) { return chapter.chapterName.includes("番外"); }格式自定义
通过saveOptions对象,可以完全控制输出格式:
const saveOptions = { getchapterName: (chapter) => { return `第${chapter.chapterNumber}章 ${chapter.chapterName || ''}`; }, mainStyleText: `p { text-indent: 2em; line-height: 1.6; }` };下载参数调整
在设置面板中,可以调整并行下载线程数、下载间隔等参数,以适应不同网站的访问限制:
// 默认设置已优化,特殊情况下可手动调整 { parallelThreads: 3, // 并行下载线程数 downloadInterval: 1000, // 下载间隔(毫秒) maxInterval: 5000 // 最大间隔时间 }技术架构:模块化设计的强大引擎
novel-downloader采用清晰的模块化架构,确保代码的可维护性和扩展性:
核心模块结构
- 规则引擎:
src/rules/目录包含各类网站解析规则,按网站类型分类管理 - 解码系统:
src/lib/decoders/处理图片识别、字体解码等特殊需求 - UI组件:
src/ui/提供美观的用户界面和交互体验 - 保存模块:
src/save/负责生成TXT、EPUB和HTML格式文件
项目构建流程
项目使用TypeScript开发,通过Webpack进行打包构建:
# 安装依赖 yarn install # 代码检查 yarn lint # 构建脚本 yarn build # 运行测试 yarn test使用技巧与最佳实践
优化下载体验
- 批量下载建议:对于大型小说,建议分卷下载,避免内存溢出
- 网络环境:使用稳定的网络连接,避免下载中断
- 定时下载:选择网络空闲时段进行批量下载
常见问题处理
Q:下载过程中卡住了怎么办?A:按下F12查看控制台错误信息,通常原因包括网络问题或网站反爬机制触发。可尝试降低并行下载线程数或稍后再试。
Q:文件出现乱码?A:某些网站使用特殊编码或字体。脚本会自动处理大部分情况,如遇问题可在设置中启用调试模式查看详细错误信息。
Q:脚本在某些网站上不工作?A:首先确认网站是否在支持列表中。如果支持但不工作,可能是网站更新了页面结构。可参考开发指南自行添加规则,或在项目issue页面提交反馈。
尊重版权与合理使用
novel-downloader旨在帮助读者更好地管理和阅读已拥有的数字内容。请遵守以下原则:
- 仅下载已购买或有权阅读的内容
- 尊重作者版权,支持正版阅读
- 对于付费章节,确保已登录相应账户并购买相关章节
技术要点:深度解析工作原理
智能页面解析
脚本通过分析DOM结构,自动识别章节列表和正文内容。每个网站都有对应的解析规则,位于src/rules/目录下。当访问支持的小说网站时,脚本会:
- 检测页面URL匹配规则
- 提取书籍信息和章节列表
- 分批下载章节内容
- 清理HTML标签和广告
- 生成结构化电子书文件
多格式输出系统
下载完成后,脚本会生成三种格式文件:
- TXT格式:纯文本,兼容所有阅读器
- EPUB格式:标准电子书格式,支持目录和样式
- HTML格式:包含原始网页样式,便于查看
错误处理与重试机制
内置完善的错误处理系统,包括:
- 网络超时自动重试
- 章节下载失败跳过并记录
- 内存使用监控与优化
- 进度保存与断点续传
加入开源社区:让工具更强大
novel-downloader是一个开源项目,欢迎开发者贡献代码。如果你发现某个网站不受支持,可以参考以下步骤添加新规则:
- 在
src/rules/目录下创建新的规则文件 - 继承
BaseRuleClass类,实现bookParse和chapterParse方法 - 在
router/download.ts中添加选择规则 - 在
header.json中添加URL匹配规则 - 运行测试确保功能正常
项目采用AGPL-3.0许可证,确保代码的开放性和可复用性。每一次贡献都能让这个工具支持更多网站,帮助更多读者保存他们心爱的作品。
开始你的离线阅读之旅
在这个信息快速更迭的时代,novel-downloader不仅是一个下载工具,更是数字阅读的守护者。它让每一本好作品都能被妥善保存,让精彩内容不会因为技术限制而消失。
无论你是想要收藏经典作品,还是需要离线阅读方便通勤,这款工具都能满足你的需求。立即开始:
- 安装脚本管理器
- 获取novel-downloader脚本
- 访问你喜欢的小说网站
- 点击下载按钮,享受离线阅读的便利
让每一本好作品都能陪伴你走过每一个美好时光。在数字阅读的世界里,novel-downloader为你保驾护航,确保精彩永不消失。📚✨
【免费下载链接】novel-downloader一个可扩展的通用型小说下载器。项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考