スポンサーリンク

| キーワード:

PythonでHTML(1) HTMLParserを使ってHTMLをパースする

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) # パース実行

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


この記事のトラックバックURL: