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

发布时间:2026/7/2 7:12:09
novel-downloader:基于TypeScript的智能小说抓取与格式转换技术方案 novel-downloader基于TypeScript的智能小说抓取与格式转换技术方案【免费下载链接】novel-downloader一个可扩展的通用型小说下载器。项目地址: https://gitcode.com/gh_mirrors/no/novel-downloadernovel-downloader是一个基于TypeScript开发的浏览器脚本工具专为技术爱好者和开发者设计能够从100多个小说网站智能抓取内容并转换为TXT和EPUB格式。该项目采用模块化架构支持字体加密破解、图片文字识别、付费章节下载等高级功能为数字内容保存提供了一套完整的技术解决方案。项目定位与技术愿景在数字阅读时代网络内容随时面临404风险。novel-downloader旨在解决小说网站内容易失性的技术难题通过自动化抓取和格式转换帮助用户建立个人数字图书馆。项目支持起点中文网、晋江文学城、七猫中文网、カクヨム、pixiv小说等主流平台覆盖中、日、英多语言内容。核心功能包括智能网页解析与章节自动识别字体加密自动破解机制三级图片文字识别方案多格式输出支持TXT/EPUB/HTML并发下载与反爬虫策略优化架构设计与实现原理模块化规则引擎项目采用高度模块化的规则系统在src/rules/目录下按网站类型组织规则文件src/rules/ ├── onePage/ # 单页式小说网站规则 ├── twoPage/ # 双页式小说网站规则 ├── special/ # 特殊网站规则需要登录或特殊处理 ├── mbtxt/ # 文本格式特殊处理规则 ├── lib/ # 共享库函数 └── biquge/ # 笔趣阁系列网站规则每个规则文件继承BaseRuleClass基类实现bookParse和chapterParse抽象方法确保对不同网站结构的灵活适配。三级图片文字识别方案针对图片文字加密网站novel-downloader实现了独特的三级解码方案文件名快速匹配通过图片文件名直接映射文字实现毫秒级识别哈希值中等精度识别下载图片并计算哈希值进行匹配平衡速度与准确性OCR光学字符识别使用PaddleOCR模型确保最高识别精度字体加密破解机制对于晋江文学城等使用自定义字体保护内容的平台项目自动下载字体文件并建立字符映射关系。字体解码模块位于src/rules/lib/目录能够处理复杂的字体加密方案。并发下载与资源管理通过p-limit库实现并发控制支持自定义线程数和下载间隔// 默认并发配置 public concurrencyLimit 10; public sleepTime 50; // 毫秒 public maxSleepTime 500; // 毫秒快速上手与配置指南环境准备与安装安装脚本管理器推荐Tampermonkey支持Chrome、Firefox、Edge等浏览器获取脚本文件git clone https://gitcode.com/gh_mirrors/no/novel-downloader cd novel-downloader yarn install yarn build安装构建产物在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: 端到端测试 } }扩展支持新网站开发者可以通过以下步骤添加对新网站的支持在src/rules/目录下创建新的规则文件继承BaseRuleClass并实现必要方法在router/download.ts中添加路由规则在header.json中配置匹配规则运行测试确保功能正常测试与质量保证项目提供完整的测试工具链yarn lint # 代码规范检查 yarn build # 构建脚本文件 yarn test:e2e # 端到端功能测试社区参与方式问题反馈在项目issue页面提交问题报告包含详细的重现步骤和日志信息功能请求提交新网站支持或功能改进建议代码贡献遵循AGPL-3.0协议提交Pull Request文档完善帮助改进文档和用户指南性能优化建议针对不同网站特性可调整以下参数优化下载体验网站类型推荐配置说明反爬严格网站并发数: 1-3间隔: 200-500ms避免触发反爬机制图片密集型网站启用OCR缓存限制内存使用防止内存溢出大型小说网站分段下载启用章节筛选避免单次下载过多章节内存管理策略对于图片特别多的博客如Lofter脚本内置了内存保护机制默认内存限制800MB自动跳过视频内容支持分批次下载图片下载流式处理novel-downloader不仅是一个技术工具更是一个开源社区项目。通过模块化设计和清晰的API接口开发者可以轻松扩展功能、优化性能共同构建更完善的数字内容保存生态系统。无论是作为个人使用还是技术研究该项目都为网络小说保存提供了可靠的技术基础。【免费下载链接】novel-downloader一个可扩展的通用型小说下载器。项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考