Legado ルール(書籍ソース解析エンジン)
概要
legado-rule は「书源规则解析器(Book Source Rule Parser)」として設計された、ウェブデータ抽出ルール用のパーサ/実行エンジンです。多種のセレクタ(CSS、XPath、JSON、正規表現、JavaScript、テキスト)を扱えることに加え、フィールド間の結合(&&)、フォールバック(||)、正規表現による净化(##)といった演算子を備え、取得したデータの自動型変換や空値処理、エラー回復も行います。複雑にネストしたルールや大規模なパースケースを効率的に処理するよう最適化されており、Node.js 18+ を対象、MITライセンスで提供されています。テストは199ケースをカバーしており、安定性と信頼性にも配慮されています。
リポジトリの統計情報
- スター数: 15
- フォーク数: 1
- ウォッチャー数: 15
- コミット数: 5
- ファイル数: 14
- メインの言語: JavaScript
主な特徴
- 多様なセレクタタイプ(CSS / XPath / JSON / RegExp / JavaScript / Text)をサポート
- フィールド結合(&&)、フォールバック(||)、正規表現净化(##)などの強力な演算子
- 自動型変換・空値処理・エラー回復により堅牢なデータ抽出を実現
- 高性能なルール実行エンジンで複雑なネストルールの解析に対応
技術的なポイント
legado-rule の技術的な核は「柔軟なセレクタ対応」と「ルール駆動のデータパイプライン」にあります。まず、CSSやXPathによるDOM抽出に加え、JSONパス相当の処理や正規表現、さらにはJavaScript評価を用いた動的抽出までを一貫して扱えるため、REST APIレスポンスや静的HTML、複雑なテキストブロックまで幅広く対応します。フィールド演算子として用意された &&(連結)や ||(フォールバック)、##(正規表現によるクリーンアップ)は、抽出ルールを短く表現しつつ実行時に柔軟な変換・衛生処理を施すために有効です。
自動型変換や空値処理は、抽出結果をそのままアプリケーションに渡せるように設計されており、数値や日付文字列の変換、未取得時のデフォルト付与やエラー時の回復ルートが定義できます。エンジンは複雑なネストルールを効率的に解決するために内部で最適化(例えば同一ノードへの複数セレクタの統合や不要評価の短絡)を行い、パフォーマンスを維持しながら多数のルールを実行できます。
テストカバレッジも特徴的で、README にある通り199ケースのテストを備え、実際の抽出シナリオに近い挙動検証がなされています。Node.js 18+ を対象にしているため、最新のランタイム機能(トップレベル await、最新のV8最適化など)を活かした実装が可能です。ライセンスはMITで、他プロジェクトへの組み込みやカスタマイズがしやすく、ウェブスクレイピングツールチェーンやETLパイプラインに容易に統合できます。
また、リポジトリ内にはデバッグ用ファイル(debug-space-preservation.js)など実装検証や空白処理の挙動確認に役立つコードが含まれており、実用上の細かな問題にも配慮されている点が好印象です。こうした設計により、単純なセレクタ抽出だけでなく、抽出後の加工・結合・フォールバック処理をルールで完結させられるのが本プロジェクトの強みです。
プロジェクトの構成
主要なファイルとディレクトリ:
- .gitignore: file
- CHANGELOG.md: file
- LICENSE: file
- README.md: file
- debug-space-preservation.js: file
…他 9 ファイル
まとめ
多様なセレクタと演算子で実務向けの堅牢なデータ抽出ルールを実現する軽量ライブラリ。
リポジトリ情報:
- 名前: legado-rule
- 説明: 説明なし
- スター数: 15
- 言語: JavaScript
- URL: https://github.com/LegadoTeam/legado-rule
- オーナー: LegadoTeam
- アバター: https://avatars.githubusercontent.com/u/223791923?v=4
READMEの抜粋:
书源规则解析器 (Book Source Rule Parser)
一个强大的网页数据提取规则解析引擎,支持多种选择器类型和高级数据处理功能。
🚀 特性
- 多种选择器支持: CSS、XPath、JSON、正则表达式、JavaScript、文本选择器
- 强大的操作符: 字段拼接(
&&)、回退机制(||)、正则净化(##) - 智能数据处理: 自动类型转换、空值处理、错误恢复
- 高性能解析: 优化的规则引擎,支持复杂嵌套规则
- *完整测试覆盖…