# book_source_parse **Repository Path**: nirenxing/book_source_parse ## Basic Information - **Project Name**: book_source_parse - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: python_to - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-10 - **Last Updated**: 2025-09-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Legado书源解析器 (Java版) 这是一个用Java实现的Legado书源解析器,支持解析Legado格式的书源文件,实现书籍搜索、详情获取、章节列表和章节内容获取等功能。 ## 功能特性 - ✅ 支持多种规则类型:JSOUP、JSONPath、XPath、JavaScript、正则表达式 - ✅ 完整的书源解析:搜索、详情、目录、正文 - ✅ JavaScript执行环境:支持java.ajax、java.get、java.post、java.md5Encode等方法 - ✅ 规则嵌套和连接符:支持&&、||、%%连接符 - ✅ 变量系统:支持{{}}变量替换 - ✅ HTTP请求:支持GET/POST请求,自动处理编码和请求头 - ✅ 相对URL处理:自动转换相对路径为绝对路径 - ✅ 正则替换:支持内容净化和格式化 ## 项目结构 ``` src/main/java/top/book/blog/book_source/ ├── entity/ # 实体类 │ ├── BookSource.java # 书源实体 │ ├── RuleSearch.java # 搜索规则 │ ├── RuleBookInfo.java # 详情规则 │ ├── RuleToc.java # 目录规则 │ ├── RuleContent.java # 正文规则 │ └── RuleExplore.java # 发现规则 ├── dto/ # 数据传输对象 │ ├── BookInfo.java # 书籍信息 │ ├── Chapter.java # 章节信息 │ └── ChapterContent.java # 章节内容 ├── engine/ # 解析引擎 │ ├── RuleAnalyzer.java # 规则分析器 │ ├── JavaScriptExtensions.java # JS扩展方法 │ ├── DefaultRuleParser.java # 默认规则解析器 │ ├── CryptoUtils.java # 加密工具 │ └── ZipUtils.java # ZIP工具 ├── manager/ # 管理器 │ └── BookSourceManager.java # 书源管理器 ├── service/ # 服务层 │ ├── BookSearchService.java # 搜索服务 │ ├── BookInfoService.java # 详情服务 │ ├── ChapterListService.java # 章节列表服务 │ └── ChapterContentService.java # 章节内容服务 ├── util/ # 工具类 │ └── HttpUtil.java # HTTP工具 ├── LegadoParserApplication.java # 主应用程序 ├── LegadoParserTest.java # 完整测试 └── SimpleTest.java # 简化测试 ``` ## 快速开始 ### 1. 环境要求 - Java 8+ - Maven 3.6+ ### 2. 运行测试 #### 简化测试(推荐) ```bash # 编译项目 mvn compile # 运行简化测试 mvn exec:java -Dexec.mainClass="top.book.blog.book_source.SimpleTest" ``` #### 完整功能测试 ```bash # 运行完整测试 mvn exec:java -Dexec.mainClass="top.book.blog.book_source.LegadoParserTest" ``` #### 交互式应用程序 ```bash # 运行交互式应用 mvn exec:java -Dexec.mainClass="top.book.blog.book_source.LegadoParserApplication" ``` ### 3. 使用示例 ```java // 创建应用实例 LegadoParserApplication app = new LegadoParserApplication(); // 加载书源 app.loadBookSources("path/to/book_source.json"); // 搜索书籍 List books = app.searchBooks("斗破苍穹", "书源URL"); // 获取书籍详情 BookInfo bookInfo = app.getBookInfo("书籍URL", "书源URL"); // 获取章节列表 List chapters = app.getChapterList("目录URL", "书源URL"); // 获取章节内容 ChapterContent content = app.getChapterContent("章节URL", "书源URL"); ``` ## 支持的规则类型 ### 1. JSOUP规则(默认) ``` class.book@tag.h1@text id.title@text tag.div.0@attr.href ``` ### 2. JSONPath规则 ``` $.data.books[*].name @json:$.author ``` ### 3. XPath规则 ``` //div[@class='book']//h1/text() @xpath://a/@href ``` ### 4. CSS选择器 ``` @css:.book h1 @css:div.content p ``` ### 5. JavaScript规则 ``` result.toUpperCase() @js:result.replace(/test/g, 'TEST') ``` ### 6. 正则表达式 ``` :书名:(.+?)作者 ##正则表达式##替换内容 ``` ## JavaScript扩展方法 支持以下JavaScript方法: - `java.ajax(url)` - AJAX请求 - `java.get(url, headers)` - GET请求 - `java.post(url, body, headers)` - POST请求 - `java.md5Encode(str)` - MD5编码 - `java.base64Decode(str)` - Base64解码 - `java.base64Encode(str)` - Base64编码 - `java.timeFormat(timestamp)` - 时间格式化 - `java.put(key, value)` - 存储变量 - `java.get(key)` - 获取变量 - `java.getString(rule)` - 解析规则获取字符串 ## 书源配置 书源配置文件格式参考 `book_source_eg.json`,包含以下主要字段: - `bookSourceName` - 书源名称 - `bookSourceUrl` - 书源URL - `searchUrl` - 搜索地址 - `ruleSearch` - 搜索规则 - `ruleBookInfo` - 详情规则 - `ruleToc` - 目录规则 - `ruleContent` - 正文规则 ## 注意事项 1. 本项目仅用于学习和研究目的 2. 请遵守相关网站的robots.txt和使用条款 3. 建议添加适当的请求间隔,避免对目标网站造成压力 4. 部分功能需要网络连接才能正常测试 ## 依赖库 - Spring Boot 2.2.6 - Jackson - JSON处理 - OkHttp - HTTP客户端 - JSoup - HTML解析 - JsonPath - JSON路径查询 - XSoup - XPath支持 - Nashorn - JavaScript引擎 ## 许可证 本项目采用MIT许可证,详见LICENSE文件。