Python
 Computer >> コンピューター >  >> プログラミング >> Python

html.parser ― PythonのシンプルなHTML・XHTMLパーサーの使い方を徹底解説

Pythonの標準ライブラリ html.parser モジュールに定義されている HTMLParser クラスは、HTMLおよびXHTMLドキュメントを解析(パース)するための機能を提供します。このクラスには、タグ、データ、コメントなどのHTML要素を識別するためのハンドラーメソッドが用意されています。

HTMLParser を実際に使うには、まずこのクラスを継承した新しいクラスを定義し、feed() メソッドを使ってHTMLテキストを渡します。

from html.parser import HTMLParser
class parser(HTMLParser):
    pass

p = parser()
p.feed('<a href = "www.tutorialspoint.com"></a>')

オーバーライドすべき主なメソッド

パーサークラスでは、以下のメソッドを目的に応じてオーバーライドして使用します。

handle_starttag(tag, attrs)

HTMLのタグは通常、開始タグと終了タグがペアになっています(例: <head></head>)。このメソッドは、開始タグを処理する際に呼び出されます。

タグ名は自動的に小文字に変換されます。引数 attrs には、タグの <> 内に記述された属性がタプルのリストとして渡されます。

例として、<a href = "www.tutorialspoint.com"> というタグをパーサーオブジェクトに渡してみましょう。

from html.parser import HTMLParser
class parser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        print("Start tag:", tag)
        for attr in attrs:
            print("     attr:", attr)

p = parser()
p.feed('<a href = "www.tutorialspoint.com">')

実行結果

Start tag: a
     attr: ('href', 'www.tutorialspoint.com')

handle_endtag(tag)

このメソッドは、要素の終了タグを処理する際に呼び出されます。

def handle_endtag(self, tag):
    print("end tag", tag)

handle_data(data)

このメソッドは、タグとタグの間にある任意のデータ(テキスト)を処理する際に呼び出されます。

def handle_data(self, data):
    print(data)

p = parser()
html = '''
<html>
    <body>
        <h1>Tutorialspoint</h1>
        <b>Python standard library</b>
        <p>HTML module</p>
    </body>
</html>'''
p.feed(html)

実行結果

Start tag: h1
Tutorialspoint
end tag h1
Start tag: b
Python standard library
end tag b
Start tag: p
HTML module
end tag p

その他の便利なメソッド

HTMLParser クラスには、上記以外にも以下のようなメソッドが用意されています。

get_starttag_text()

直前に開かれた開始タグのテキストそのものを返します。タグの生の記述内容を確認したい場合に役立ちます。

getpos()

現在解析中の行番号とオフセット(列位置)を返します。エラー箇所の特定などに活用できます。

handle_startendtag(tag, attrs)

handle_starttag() と似ていますが、<img ... /> のようなXHTML形式の空要素タグをパーサーが検出した際に呼び出される点が異なります。

handle_comment(data)

<!--comment--> のようなコメントが検出されたときに呼び出されます。引数にはコメントの内容が渡されます。

これらのハンドラーメソッドを組み合わせることで、スクレイピングやHTML構造の解析など、さまざまな用途に柔軟に対応できる独自のパーサーを簡単に構築できます。

  1. HTMLのdlタグとは?記述リストの作成方法をサンプルコード付きで解説

    HTMLのdlタグとは HTMLの<dl>要素は、記述リスト(description list)を定義するために使用されるタグです。HTML5では<dl>は「記述リスト」を表しますが、HTML4では「定義リスト(definition list)」として扱われていました。この違いを理解しておくと、より適切なマークアップができるようになります。 記述リストは、用語とその説明をセットで表示したい場合に便利な要素で、用語集、FAQ、メタデータの表示など、さまざまな場面で活用できます。 dlタグの基本構造 <dl>タグは、以下の2つの要素と組み合わせて使用します。

  2. Pythonで単利(シンプルインタレスト)を計算する方法をわかりやすく解説

    本記事では、Python 3.xを使って単利(シンプルインタレスト)を計算する方法について詳しく解説します。金融計算の基礎となる単利の概念から、実際のコード実装まで、初心者の方にもわかりやすいように順を追って説明していきます。 単利とは? 単利とは、元本に対してのみ利息が発生する計算方式です。複利と異なり、発生した利息が次期の元本に加算されないため、計算式がシンプルなのが特徴です。 単利は「1日あたりの利率 × 元本 × 支払いまでの経過日数」を掛け合わせることで求められます。 単利の計算式 数学的には、以下の公式で表されます。 単利(SI)=(P × T × R)÷ 100 各変数の意味は次