html.parserは、Python標準ライブラリに含まれるHTMLパーサ(HTMLを解析する仕組み)です。HTMLParserクラスを継承し、タグやテキストを受け取るメソッドを書いて使います。
html.parserとは(標準ライブラリのパーサ)
html.parserは、追加インストールなしで使えるPython標準ライブラリのHTML解析モジュールです。
HTMLを先頭から読み、「開始タグを見つけた」などのイベントごとにメソッドを呼び出す方式で動きます。仕様はPython公式ドキュメントで確認できます。
html.parserの使い方 - HTMLParserを継承して書く
HTMLParserを継承したクラスを作り、受け取りたいイベントのメソッドだけを上書きします。
handle_starttag / handle_endtag / handle_dataの役割
handle_starttagは開始タグ(タグ名と属性)、handle_endtagは終了タグ、handle_dataはタグに挟まれたテキストを受け取ります。上書きしなかったイベントは無視されます。
feed()でHTMLを流し込むコード例
次のコードは、HTML内のリンク先(href属性)とテキストを表示する完全な例です。
from html.parser import HTMLParser
class LinkParser(HTMLParser):
def handle_starttag(self, tag, attrs):
if tag == "a":
print("リンク先:", dict(attrs).get("href"))
def handle_data(self, data):
if data.strip():
print("テキスト:", data.strip())
html = '<ul><li><a href="https://example.com/">公式サイト</a></li></ul>'
parser = LinkParser()
parser.feed(html)
実行すると「リンク先: https://example.com/」「テキスト: 公式サイト」と出力されます。feed()は複数回呼んで、HTMLを分割して流し込むこともできます。
html.parserとBeautifulSoupの使い分け
要素の検索・抽出を手軽にしたいならBeautifulSoup、依存ライブラリを増やしたくない軽い処理ならhtml.parserが向いています。
BeautifulSoupは外部ライブラリ(pip install beautifulsoup4で導入)で、タグ名やCSSセレクタで要素を直接探せます。
BeautifulSoupのパーサにhtml.parserを指定する方法
BeautifulSoupは解析エンジンを選べます。標準のhtml.parserを指定すれば、追加のパーサなしで動きます。
from bs4 import BeautifulSoup
html = '<ul><li><a href="https://example.com/">公式サイト</a></li></ul>'
soup = BeautifulSoup(html, "html.parser")
print(soup.a["href"])
第2引数の"html.parser"がパーサの指定です。lxmlなどを入れていない環境でもそのまま動きます。
HTMLをPythonのhtml.parserで解析する方法に関するよくある質問
html.parserは追加インストールが必要ですか?
不要です。Python本体に付属する標準ライブラリのため、importするだけで使えます。
壊れたHTMLを渡すとエラーになりますか?
多少崩れたHTMLでも例外を出さずに解析を続けます。厳密な文法チェックには向いていません。
実務に直結するIT・DX研修を、あなたの組織に。
CodeCampは、企業の課題や育成目標に合わせて、 Web開発・プログラミング・生成AI活用・DX人材育成などの研修を設計・提供しています。