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構造の解析など、さまざまな用途に柔軟に対応できる独自のパーサーを簡単に構築できます。
-
HTMLのdlタグとは?記述リストの作成方法をサンプルコード付きで解説
HTMLのdlタグとは HTMLの<dl>要素は、記述リスト(description list)を定義するために使用されるタグです。HTML5では<dl>は「記述リスト」を表しますが、HTML4では「定義リスト(definition list)」として扱われていました。この違いを理解しておくと、より適切なマークアップができるようになります。 記述リストは、用語とその説明をセットで表示したい場合に便利な要素で、用語集、FAQ、メタデータの表示など、さまざまな場面で活用できます。 dlタグの基本構造 <dl>タグは、以下の2つの要素と組み合わせて使用します。
-
Pythonで単利(シンプルインタレスト)を計算する方法をわかりやすく解説
本記事では、Python 3.xを使って単利(シンプルインタレスト)を計算する方法について詳しく解説します。金融計算の基礎となる単利の概念から、実際のコード実装まで、初心者の方にもわかりやすいように順を追って説明していきます。 単利とは? 単利とは、元本に対してのみ利息が発生する計算方式です。複利と異なり、発生した利息が次期の元本に加算されないため、計算式がシンプルなのが特徴です。 単利は「1日あたりの利率 × 元本 × 支払いまでの経過日数」を掛け合わせることで求められます。 単利の計算式 数学的には、以下の公式で表されます。 単利(SI)=(P × T × R)÷ 100 各変数の意味は次