news 2026/7/2 7:11:47

novel-downloader:基于TypeScript的智能小说抓取与格式转换技术方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
novel-downloader:基于TypeScript的智能小说抓取与格式转换技术方案

novel-downloader:基于TypeScript的智能小说抓取与格式转换技术方案

【免费下载链接】novel-downloader一个可扩展的通用型小说下载器。项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader

novel-downloader是一个基于TypeScript开发的浏览器脚本工具,专为技术爱好者和开发者设计,能够从100多个小说网站智能抓取内容并转换为TXT和EPUB格式。该项目采用模块化架构,支持字体加密破解、图片文字识别、付费章节下载等高级功能,为数字内容保存提供了一套完整的技术解决方案。

项目定位与技术愿景

在数字阅读时代,网络内容随时面临404风险。novel-downloader旨在解决小说网站内容易失性的技术难题,通过自动化抓取和格式转换,帮助用户建立个人数字图书馆。项目支持起点中文网、晋江文学城、七猫中文网、カクヨム、pixiv小说等主流平台,覆盖中、日、英多语言内容。

核心功能包括:

  • 智能网页解析与章节自动识别
  • 字体加密自动破解机制
  • 三级图片文字识别方案
  • 多格式输出支持(TXT/EPUB/HTML)
  • 并发下载与反爬虫策略优化

架构设计与实现原理

模块化规则引擎

项目采用高度模块化的规则系统,在src/rules/目录下按网站类型组织规则文件:

src/rules/ ├── onePage/ # 单页式小说网站规则 ├── twoPage/ # 双页式小说网站规则 ├── special/ # 特殊网站规则(需要登录或特殊处理) ├── mbtxt/ # 文本格式特殊处理规则 ├── lib/ # 共享库函数 └── biquge/ # 笔趣阁系列网站规则

每个规则文件继承BaseRuleClass基类,实现bookParsechapterParse抽象方法,确保对不同网站结构的灵活适配。

三级图片文字识别方案

针对图片文字加密网站,novel-downloader实现了独特的三级解码方案:

  1. 文件名快速匹配:通过图片文件名直接映射文字,实现毫秒级识别
  2. 哈希值中等精度识别:下载图片并计算哈希值进行匹配,平衡速度与准确性
  3. OCR光学字符识别:使用PaddleOCR模型确保最高识别精度

字体加密破解机制

对于晋江文学城等使用自定义字体保护内容的平台,项目自动下载字体文件并建立字符映射关系。字体解码模块位于src/rules/lib/目录,能够处理复杂的字体加密方案。

并发下载与资源管理

通过p-limit库实现并发控制,支持自定义线程数和下载间隔:

// 默认并发配置 public concurrencyLimit = 10; public sleepTime = 50; // 毫秒 public maxSleepTime = 500; // 毫秒

快速上手与配置指南

环境准备与安装

  1. 安装脚本管理器:推荐Tampermonkey(支持Chrome、Firefox、Edge等浏览器)
  2. 获取脚本文件
    git clone https://gitcode.com/gh_mirrors/no/novel-downloader cd novel-downloader yarn install yarn build
  3. 安装构建产物:在dist/目录中找到bundle.user.js文件并安装

基本使用流程

访问支持的小说网站时,网页右上角会出现下载图标。点击即可开始下载,右下角会显示实时进度条。下载完成后自动生成TXT和EPUB文件。

核心配置参数

在设置面板中可以调整以下参数:

参数名称默认值说明
并行下载线程数10同时下载的章节数量
下载间隔时间50ms单线程时章节下载间隔
最大下载间隔500ms单线程时最大间隔时间
调试模式关闭启用详细日志输出
自动存档开启将页面存档至互联网档案馆

高级应用与扩展能力

自定义章节筛选

通过开发者工具注入chapterFilter函数,实现精确的章节筛选:

// 只下载前50章 function chapterFilter(chapter) { return chapter.chapterNumber <= 50; } // 只下载特定章节类型 function chapterFilter(chapter) { return chapter.chapterName.includes("番外") || chapter.chapterName.includes("后记"); }

输出格式定制

通过saveOptions对象完全控制输出格式:

const saveOptions = { getchapterName: (chapter) => { return `第${chapter.chapterNumber}章 ${chapter.chapterName}`; }, mainStyleText: `p { text-indent: 2em; line-height: 1.8; margin-bottom: 1em; }`, chapterSort: (a, b) => { // 倒序排列章节 return b.chapterNumber - a.chapterNumber; } };

Token认证配置

对于需要登录的网站,可以通过抓包工具获取token并注入:

const tokenOptions = { Jjwxc: "11111111_750afc84c839aaaaafccd841fffd11f1", Xrzww: { deviceIdentify: "webh517657567560", Authorization: "Bearer 453453453e03ee546456546754756756" } }; window.tokenOptions = tokenOptions;

自定义完成回调

下载完成后自动执行特定操作:

function customFinishCallback(book) { window.close(); // 下载完成后自动关闭窗口 // 或执行其他自定义逻辑 } window.customFinishCallback = customFinishCallback;

生态集成与社区贡献

技术栈与依赖关系

项目基于现代Web技术栈构建:

{ "dependencies": { "@mozilla/readability": "网页内容提取", "@oovz/esearch-ocr": "OCR文字识别", "onnxruntime-web": "AI模型推理", "vue": "用户界面框架", "streamsaver": "流式文件保存" }, "devDependencies": { "typescript": "类型安全", "webpack": "构建工具", "playwright": "端到端测试" } }

扩展支持新网站

开发者可以通过以下步骤添加对新网站的支持:

  1. src/rules/目录下创建新的规则文件
  2. 继承BaseRuleClass并实现必要方法
  3. router/download.ts中添加路由规则
  4. header.json中配置匹配规则
  5. 运行测试确保功能正常

测试与质量保证

项目提供完整的测试工具链:

yarn lint # 代码规范检查 yarn build # 构建脚本文件 yarn test:e2e # 端到端功能测试

社区参与方式

  1. 问题反馈:在项目issue页面提交问题报告,包含详细的重现步骤和日志信息
  2. 功能请求:提交新网站支持或功能改进建议
  3. 代码贡献:遵循AGPL-3.0协议,提交Pull Request
  4. 文档完善:帮助改进文档和用户指南

性能优化建议

针对不同网站特性,可调整以下参数优化下载体验:

网站类型推荐配置说明
反爬严格网站并发数: 1-3
间隔: 200-500ms
避免触发反爬机制
图片密集型网站启用OCR缓存
限制内存使用
防止内存溢出
大型小说网站分段下载
启用章节筛选
避免单次下载过多章节

内存管理策略

对于图片特别多的博客(如Lofter),脚本内置了内存保护机制:

  • 默认内存限制:800MB
  • 自动跳过视频内容
  • 支持分批次下载
  • 图片下载流式处理

novel-downloader不仅是一个技术工具,更是一个开源社区项目。通过模块化设计和清晰的API接口,开发者可以轻松扩展功能、优化性能,共同构建更完善的数字内容保存生态系统。无论是作为个人使用还是技术研究,该项目都为网络小说保存提供了可靠的技术基础。

【免费下载链接】novel-downloader一个可扩展的通用型小说下载器。项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/2 7:11:39

如何用DankDroneDownloader彻底掌控你的无人机固件版本

如何用DankDroneDownloader彻底掌控你的无人机固件版本 【免费下载链接】DankDroneDownloader A Custom Firmware Download Tool for DJI Drones Written in C# 项目地址: https://gitcode.com/gh_mirrors/da/DankDroneDownloader 想要完全掌控你的大疆无人机固件版本吗…

作者头像 李华
网站建设 2026/7/2 7:11:30

《墨香情》2026年7月最新官网下载:拳系定位、养成及实战技巧

在《墨香情》这款以 “武器定流派” 为核心特色的复古武侠 MMORPG 中&#xff0c;拳系以其独特的近战续航与爆发能力&#xff0c;成为了单挑和 BOSS 战中的佼佼者。本文将为你全面解析墨香情拳系的核心特点、养成攻略及实战技巧&#xff0c;助你在江湖中打出一片天地。《墨香情…

作者头像 李华
网站建设 2026/7/2 7:10:14

判断网站谷歌收录:无需代码基础,按这份清单自检只需4步骤

普通业务员打开浏览器&#xff0c;在搜索框输入site:你的完整域名。这串英文字母后方紧跟域名&#xff0c;中间不留空格。页面跳出结果数字。谷歌每日处理85亿次搜索请求。新建网页提交后系统常规反应时间为48小时。部分新站等待期长达两周。测试表明仅包含3个子页面的微型站点…

作者头像 李华
网站建设 2026/7/2 7:08:17

木马程序入侵全生命周期拆解:从原理到防御实战指南

1. 项目概述&#xff1a;从“黑话”到防御认知的转变在网络安全这个领域&#xff0c;“木马程序”这个词几乎无人不知&#xff0c;但真正理解它如何悄无声息地进入你的电脑、手机&#xff0c;并像特洛伊木马一样从内部攻破城池的人&#xff0c;却并不多。很多人一听到“木马”、…

作者头像 李华
网站建设 2026/7/2 7:06:16

胸片AI诊断新冠:医学影像落地的工程实践

1. 项目概述&#xff1a;一张胸片里藏着的AI诊断逻辑你有没有想过&#xff0c;一张普通的胸部X光片&#xff0c;不用等核酸检测、不用做CT扫描&#xff0c;仅靠算法就能在几秒钟内告诉你“极可能感染了新冠病毒”&#xff1f;这不是科幻电影里的桥段&#xff0c;而是过去三年全…

作者头像 李华