このモジュールでは、ハイパーテキスト記述言語 (HTML, HyperText Mark-up
Language) 形式で書式化されたテキストファイルを解析するための基盤として
役立つクラスを定義しています。このクラスは I/O と直接的には接続
されません -- このクラスにはメソッドを介して文字列形式の入力を
提供する必要があり、出力を生成するには ``フォーマッタ (formatter)''
オブジェクトのメソッドを何度か呼び出さなくてはなりません。
HTMLParser クラスは、機能を追加するために他のクラスの基底クラス
として利用するように設計されており、ほとんどのメソッドが拡張したり
上書きしたりできるようになっています。
さらにこのクラスは sgmllib モジュール
で定義されている SGMLParser クラスから導出されており、その機能
を拡張しています。HTMLParser の実装は、RFC 1866
で解説されている HTML 2.0 記述言語をサポートします。
formatter では 2 つのフォーマッタ
オブジェクト実装が提供されています; フォーマッタのインタフェースに
ついての情報は formatter モジュールのドキュメントを参照
してください。
以下は sgmllib.SGMLParser で定義されているインタフェースの
概要です:
- インスタンスにデータを与えるためのインタフェースは feed()
メソッドで、このメソッドは文字列を引数に取ります。
このメソッドに一度に与えるテキストは必要に応じて多くも少なくも
できます; というのは "p.feed(a);p.feed(b)" は "p.feed(a+b)"
と同じ効果を持つからです。
与えられたデータが完全な HTML マークアップ文を含む場合、それらの文は
即座に処理されます; 不完全なマークアップ構造はバッファに保存されます。
全ての未処理データを強制的に処理させるには、 close()
メソッドを呼び出します。
例えば、ファイルの全内容を解析するには:
parser.feed(open('myfile.html').read())
parser.close()
のようにします。
- HTML タグに対して意味付けを定義するためのインタフェースはとても
単純です: サブクラスを導出して、start_tag()、
end_tag()、あるいは do_tag()
といったメソッドを定義するだけです。
パーザはこれらのメソッドを適切なタイミングで呼び出します:
start_tag や do_tag() は
<tag ...>
の形式の開始タグに遭遇した時に呼び出されます;
end_tag() は <tag>
の形式の終了タグに
遭遇した時に呼び出されます。<H1>
... </H1>
のように
開始タグが終了タグと対応している必要がある場合、クラス中で
start_tag() が定義されていなければなりません;
<P>
のように終了タグが必要ない場合、クラス中では
do_tag() を定義しなければなりません。
このモジュールではパーザクラスと例外を一つづつ定義しています:
クラス HTMLParser( |
formatter) |
-
基底となる HTML パーザクラスです。XHTML 1.0 仕様
(http://www.w3.rog/TR/xhtml1) 勧告で要求されている
全てのエンティティ名をサポートしています。
- exception HTMLParseError
-
HTMLParser クラスがパーズ処理中にエラーに遭遇した場合に
送出する例外です。
バージョン 2.4 で 新たに追加 された仕様です。
参考:
- formatter:モジュール
- 抽象化された書式イベントの流れを
writer オブジェクト上の特定の出力イベントに変換するための
インターフェース。.
- HTMLParser:モジュール
- HTML パーザのひとつです。やや低いレベル
でしか入力を扱えませんが、XHTML を扱うことができるように設計
されています。``広く知られている HTML (HTML as deployed)'' では
使われておらずかつ XHTML では正しくないとされる SGML 構文のいくつか
は実装されていません。.
- htmlentitydefs:モジュール
- XHTML 1.0 エンティティに対する置換
テキストの定義。.
- sgmllib:モジュール
- HTMLParser の基底クラス。.
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。