HTMLParser で HTML を処理する
Python に標準搭載されている HTML パーサである html.parser.HTMLParser は、イベントドリブンな HTML パーサです。
HTMLParser
クラスを継承して独自のパーサを作成し、feed
メソッドに HTML テキストを渡すことによってパースを開始します。
下記のサンプルコードでは、開始タグ、終了タグ、テキストデータ、コメントが見つかったときに、それぞれ内容を出力しています。
HTMLParser
は、単純に HTML 要素を前から順番に処理していくだけなので、現在の要素がどのようなコンテキストで記述されているかは、パーサクラス内で判断していくように実装する必要があります。
ローカルの HTML ファイル、Web 上の HTML ファイルを扱う場合
ローカルファイルの内容は、Python 標準の open
関数で読み込むことができます。
Web 上の HTML ファイルの内容も、requests
モジュールなどで簡単に読み込めます。
あとは、取得した HTML テキストを HTMLParser#feed()
に渡してやれば OK です。