UNPKG

cparse

Version:

一个基于 Cheerio 的 HTML 解析和数据提取工具库

188 lines (138 loc) 7.02 kB
# Changelog All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. ## [2.0.3](https://github.com/wind2sing/cparse/compare/v2.0.2...v2.0.3) (2024-12-16) ### ✨ 新增功能 - 简化语法 添加了更简洁的调用方式,现在可以直接在 Cheerio 实例上调用 `parse` 方法! ### 🎯 核心改进 - **新增 `$.parse()` 方法**:直接在 Cheerio 实例上调用,无需传递 `$` 参数 - **向后兼容**:传统的 `parse(rule, $)` 语法仍然完全支持 - **TypeScript 支持**:完整的类型定义,包含新的简化语法 - **全面测试**:新增 6 个测试用例,总测试数量达到 209 个 ### 🚀 使用示例 ```javascript // ✅ 新的简化语法 const $ = loadCheerio(html); const title = $.parse('.title'); const data = $.parse({ title: '.title', items: '[.item]' }); // ❌ 传统语法(仍然支持) const title2 = parse('.title', $); ``` ### 📚 文档更新 - 更新 README 文档,突出新的简化语法 - 添加语法对比表格和使用示例 - 更新 TypeScript 类型定义 ### 🧪 测试覆盖 - 新增 `$.parse()` 方法基础功能测试 - 新增属性提取、数组提取测试 - 新增结构化数据和自定义过滤器测试 - 所有 209 个测试用例通过 ## [2.0.2](https://github.com/wind2sing/cparse/compare/v2.0.1...v2.0.2) (2024-12-16) ### 🎯 进一步优化 - 移除冗余语法糖 继续优化项目,移除价值有限的语法糖,专注于真正有价值的功能。 ### 🗑️ 移除功能 - **移除类条件语法糖**`selector[.class]` → 直接使用标准 CSS `selector.class` - 原因:Cheerio 原生支持更简洁,无需额外语法糖 - 迁移:将 `div[.active]` 改为 `div.active` ### 🔧 改进功能 - **修复 nextNode() 方法**:增加错误处理和更好的文本节点查找 - **更新版本号**:修复代码中的版本号不一致问题 ### 📚 文档更新 - 更新 README 和示例,移除已废弃的语法糖说明 - 突出标准 CSS 选择器的完全支持 ### 💥 Breaking Changes - 移除 `selector[.class]` 语法糖支持 - 用户需要使用标准 CSS 类选择器 `selector.class` ### 🔄 迁移指南 ```javascript // ❌ 旧语法(已移除) parse('div[.active]', $) // ✅ 新语法(推荐) parse('div.active', $) ``` ## [2.0.1](https://github.com/wind2sing/cparse/compare/v2.0.0...v2.0.1) (2024-12-16) ### 🎯 重大重构优化版本 这是 2.0.0 的优化版本,完成了彻底的重构工作,移除了与 Cheerio 原生功能重复的实现,专注于提供真正有价值的语法糖和过滤器功能。 ### ✨ 核心改进 - **代码简化**:移除重复实现,代码量减少 40% - **性能提升**:直接使用 Cheerio 原生选择器,性能大幅提升 - **专注核心**:保留语法糖和过滤器系统的核心价值 - **文档重构**:README 全面重新组织,突出核心功能 ### 🚀 性能表现 - HTML 加载:53.78ms/次 - 选择器解析:6.06ms/次 - 复杂对象提取:31.28ms/次 - 内存优化:减少 32.24MB ### 🧪 质量保证 - 203 个测试用例全部通过 - 8 个测试套件全部通过 - 代码质量检查通过 ## [2.0.0](https://github.com/wind2sing/cparse/compare/v1.0.6...v2.0.0) (2024-12-16) ### 🎯 重大重构 - 专注核心价值 这是一个重大版本更新,重构了整个项目架构,移除了与 Cheerio 原生功能重复的实现,专注于提供真正有价值的语法糖和过滤器功能。 ### ✨ 新增功能 #### 语法糖功能增强 - **属性提取语法**`selector@attribute` - 直接提取属性值 - **数组提取语法**`[selector]` - 获取所有匹配元素 - **类条件简化**`selector[.class]``selector.class` - **自定义伪选择器**`:not-empty``:not(:empty)` #### 强大的过滤器系统 - **30+ 内置过滤器**:数据类型转换、字符串处理、数组操作等 - **过滤器链**`selector | filter1 | filter2` - 链式数据处理 - **自定义过滤器**:支持扩展自定义过滤器 #### 结构化数据提取 - **对象语法**`{ title: 'h1', price: '.price | float' }` - **分割器语法**`['[.item]', { name: '.name' }]` - **函数处理**:支持自定义函数处理 ### 🚀 性能大幅提升 - **HTML 加载**:71ms/次(优化后) - **简单选择器解析**:7.74ms/次 - **复杂对象提取**:40.87ms/次 - **过滤器链处理**:7.81ms/次 - **内存使用**:优化后内存增长为负值(-31.52MB) ### 🗑️ 移除重复实现 **现在直接使用 Cheerio 原生支持,性能更优:** - 条件查询处理(`:first`, `:last`, `:empty`, `:contains()`, `[attr]`, `[attr=value]`- 嵌套查询处理(`parent > child`- 伪选择器重复实现 ### 📚 文档全面重构 - **README 重新组织**:更清晰的结构和格式 - **突出核心价值**:专注于语法糖和过滤器系统 - **现代化设计**:徽章、表格、示例代码 - **示例更新**:展示优化后的用法 ### 🧪 测试全面通过 - **203 个测试用例**全部通过 - **8 个测试套件**全部通过 - **性能测试优化**:调整合理的性能阈值 - **代码质量保证**:ESLint 检查通过 ### 💥 Breaking Changes - 移除了一些内部 API,但对用户使用的公共 API 保持兼容 - 查询解析结果结构略有变化(移除了 `condition``nested` 字段) - 性能测试阈值调整 ### 🔄 迁移指南 对于大多数用户,这次更新是向后兼容的。标准的 CSS 选择器和过滤器功能无需修改代码。 **之前的用法仍然有效:** ```javascript parse('h1', $) // ✅ 完全兼容 parse('[.item]', $) // ✅ 完全兼容 parse('a@href', $) // ✅ 完全兼容 parse('.price | float', $) // ✅ 完全兼容 ``` ### [1.0.6](https://github.com/wind2sing/cparse/compare/v1.0.5...v1.0.6) (2025-06-16) #### 重大更新 - **升级 Cheerio 到 1.1.0**: 升级到最新版本的 Cheerio,获得更好的性能和稳定性 - **修复兼容性问题**: 重构插件系统以适应 Cheerio 1.0+ 的 API 变化 - **改进插件实现**: 使用 `this.eq()` 方法替代直接构造函数调用,解决了 "Class constructor LoadedCheerio cannot be invoked without 'new'" 错误 #### 技术改进 - 重构了 `src/cheerio/plugin.js` 中的 `extract``extractAll` 方法 - 优化了插件启用机制,确保与新版 Cheerio 的兼容性 - 所有现有功能保持向后兼容 #### 测试 - 所有测试用例通过 - 验证了数据提取功能的正确性 - 确保了 URL 转换功能的稳定性 ### [1.0.5](https://github.com/wind2sing/cparse/compare/v1.0.4...v1.0.5) (2021-07-14) ### [1.0.4](https://github.com/wind2sing/cparse/compare/v1.0.3...v1.0.4) (2021-07-14) ### [1.0.3](https://github.com/wind2sing/cparse/compare/v1.0.0...v1.0.3) (2020-08-06) ## 1.0.0 (2020-08-06) ### Features * init files d9dd55e