スポンサーリンク
HTMLParserでHTMLをパースする。
HTMLParserクラスは、このクラスを継承して使用する。
HTMLParser.feedを呼び出すと、タグなどが見つかった際にオーバーライドしたhandle_starttagメソッドが呼ばれるので、その度に必要な処理を記述する。
注意
公式ドキュメント
https://docs.python.org/3/library/html.parser.html
にあるコードだとHTML内に改行が見つかるたびにhandle_dataが呼び出されてしまうので、\n単体が見つかった場合は何もしないように処理を追加。
from html.parser import HTMLParser ##################################### # HTMLのテキスト text = """<html> <body> <p> hello world </p> </body> </html> """
##################################### #https://docs.python.org/3/library/html.parser.html # HTMLParserを継承したMyHTMLParserを作成 class MyHTMLParser(HTMLParser): # HTMLParser.feed を呼び出すと、以下の各関数がパース中に呼び出される def handle_starttag(self, tag, attrs): print("Encountered a start tag:", tag) def handle_endtag(self, tag): print("Encountered an end tag :", tag) def handle_data(self, data): # タグの後の改行でもhandle_dataが呼び出されてしまうため # 改行単体の時はひとまず抜ける if data == '\n': return print("Encountered some data :", data)
##################################### # パース処理 ps = MyHTMLParser() # パーサー作成 ps.feed(text) # パース実行