HTML を Python で解析する方法
Aspose.HTML FOSS for Python は、標準のツリー構築アルゴリズムでマークアップを解析します: 完全なページには HTMLDocument.parse()、スニペットには HTMLDocument.parse_fragment()、結果には型付き要素クラス(HTMLElement とそのサブクラス)があります。本ガイドでは、解析エントリーポイントを取り上げ、pip を使用したインストールで DOM を通じて出力を検証します。
ステップバイステップガイド
ステップ 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.html_document import HTMLDocument
from aspose_html.dom import Documentステップ 3: 適切な解析エントリーポイントを選択する
HTMLDocument.parse() は標準エラー回復を伴う全文書ツリー構築を実行します;HTMLDocument.parse_fragment() は部分マークアップ用のフラグメントアルゴリズムを適用します;HTMLDocument.load() はソースから読み取ります。解析された要素は型付けされて到着します — <a> は HTMLAnchorElement、<input> は HTMLInputElementです。
ステップ 4: DOM を通じて出力を検証する
解析結果は通常の DOM ツリーです — 同じ検索および属性 API が適用されます。等価な構造をプログラムで構築すると、共有されたインターフェースが示されます:
doc = Document()
el = doc.create_element("div")
el.set_attribute("id", "content")
doc.append_child(el)
print(doc.get_element_by_id("content").has_child_nodes())ステップ 5: スタイルまたは構造で続行する
スタイルシートを添付して計算済みスタイルを読み取るか、Element 挿入ヘルパー(insert_adjacent_html()、insert_adjacent_text())をローカライズ編集に使用します — 解析出力は他のすべての層に供給されます。
一般的な問題と修正策
部分的なマークアップは html と body のラッパーを取得します。 parse() 完全文書のルールを適用します;使用 parse_fragment() スニペット用。
不正なマークアップはエラーなくパースされます。 それが標準の動作です — tree construction は例外を発生させるのではなく、すべてのエラーケースに対する回復を定義します。
テーブルのコンテンツがテーブルの外に出現します。 Foster parenting of misplaced table content はアルゴリズムの一部です;ソースのネストを修正してください。
よくある質問
解析された要素は型付けされていますか?
はい — 解析は HTMLElement 階層を生成します:フォームコントロール(HTMLFormElement、HTMLInputElement)、埋め込みコンテンツ(HTMLImageElement、HTMLCanvasElement)、ナビゲーション(HTMLAnchorElement)など。
低レベルでパースパイプラインを制御できますか?
はい — Tokenizer と TreeBuilder は公開されており、parse_html() がワンコールラッパーです。
パースはスクリプトを実行しますか?
いいえ。スクリプト評価は JSContext を介して明示的かつ個別に行われます。