Legado ルール(書籍ソース解析エンジン)

Library

概要

legado-rule は「书源规则解析器(Book Source Rule Parser)」として設計された、ウェブデータ抽出ルール用のパーサ/実行エンジンです。多種のセレクタ(CSS、XPath、JSON、正規表現、JavaScript、テキスト)を扱えることに加え、フィールド間の結合(&&)、フォールバック(||)、正規表現による净化(##)といった演算子を備え、取得したデータの自動型変換や空値処理、エラー回復も行います。複雑にネストしたルールや大規模なパースケースを効率的に処理するよう最適化されており、Node.js 18+ を対象、MITライセンスで提供されています。テストは199ケースをカバーしており、安定性と信頼性にも配慮されています。

GitHub

リポジトリの統計情報

  • スター数: 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 ファイル

まとめ

多様なセレクタと演算子で実務向けの堅牢なデータ抽出ルールを実現する軽量ライブラリ。

リポジトリ情報:

READMEの抜粋:

书源规则解析器 (Book Source Rule Parser)

一个强大的网页数据提取规则解析引擎,支持多种选择器类型和高级数据处理功能。

Node.js Tests License

🚀 特性

  • 多种选择器支持: CSS、XPath、JSON、正则表达式、JavaScript、文本选择器
  • 强大的操作符: 字段拼接(&&)、回退机制(||)、正则净化(##)
  • 智能数据处理: 自动类型转换、空值处理、错误恢复
  • 高性能解析: 优化的规则引擎,支持复杂嵌套规则
  • *完整测试覆盖