HTML を Python で解析する方法

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 を介して明示的かつ個別に行われます。

参照

 日本語