PythonでHTMLツリービルダーを使用する方法
Aspose.HTML FOSSにおけるPythonのツリー構築は、標準アルゴリズム — 挿入モード、エラーリカバリ、クイークス検出、外部コンテンツ — を実装しており、parse_html()がワンコールエントリーポイント、TreeBuilderが機構を公開しています。このガイドでは、パイプラインとその動作を説明し、インストールにはpipを使用します。
ステップバイステップガイド
ステップ 1: パッケージをインストールする
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .ステップ 2: 必要な関数をインポートする
from aspose_html.tree import parse_htmlステップ 3: マークアップをツリーにパースする
parse_html() はトークナイザーとツリービルダーを同時に実行し、完成したツリーを返します;parse_fragment() はコンテキスト要素に対してフラグメントアルゴリズムを適用します。両方とも内部で TreeBuilder.run() を駆動します。
ステップ 4: 構築状態を理解する
InsertionMode はアルゴリズムのモードマシンをモデル化し、StackOfOpenElements と TemplateInsertionModeStack が開いている要素とテンプレートモードを仕様どおり正確に追跡します。
ステップ 5: 標準のエラー回復に依存する
入れ子が不適切なフォーマット要素は run_adoption_agency_algorithm() によって ActiveFormattingList の追跡と共に修復されます;位置が誤ったテーブルコンテンツは get_foster_parent_location() を介したフォスター・ペアレントによって処理されます;doctype は determine_quirks_mode() を通じて分類されます;SVG/MathML 属性は adjust_*_attributes() 関数によって調整されます。
一般的な問題と修正
不正なマークアップはエラーではなくツリーを生成します。 設計上 — 標準アルゴリズムはすべてのエラーケースに対するリカバリを定義しています。
書式タグが重複しています。 adoption agency algorithm はミスネスト後に書式コンテキストを再構築し、出力はブラウザの挙動と一致します。
テーブルの内容がテーブルの外に移動しました。 Foster parenting は誤って配置されたコンテンツを再配置しました。ソースマークアップのネストを修正してください。
よくある質問
いつ TreeBuilder を直接使用し、parse_html を使用しない方がよいですか?
構築状態の内省が必要な場合に限ります;parse_html() は通常のパースをカバーします。
クイークスモードはどのように決定されますか?
determine_quirks_mode() はドキュメントの doctype から文書を分類します。
ビルダーは SVG と MathML を処理しますか?
はい — 外部コンテンツは属性調整器を経由し、標準統合ポイント検出を伴います。