【Python/HtmlParser】HTML解析(パース)

Python3の標準ライブラリ「HtmlParser」を用いて、HTML解析(パース)する方法とソースコードについて紹介します。

HTML解析(パース)

HTML解析(パース)とは、HTML文の中身を解析して必要な情報を取り出すことです。
Python3では、標準ライブラリ「HtmlParser」を用いて行うことができます。
インターネット上やローカルのHTMLファイルにアクセスするには、標準ライブラリ「urllib」を使います。

ソースコード(Python3)

サンプルプログラムのソースコードです。

# -*- coding: utf-8
import urllib.request
import html.parser as hp

# HTMLParserを継承したクラスを定義
class Parser(hp.HTMLParser):
    def handle_starttag(self, tag, attrs):
        print("開始タグ :", tag, attrs)
    def handle_endtag(self, tag):
        print("終了タグ :", tag)
    def handle_data(self, data):
        print("データ:", data)
    def handle_comment(self, comment):
        print("コメント:", comment)

# 取得先URL
url = "https://python.joho.info/"

# HTMLファイルを開く
data = urllib.request.urlopen(url)

# HTMLの取得
html = data.read()
html = html.decode('utf-8')

# HTML解析(タイトルタグの値取得)
parser = Parser()
parser.feed(html)

# 終了処理
parser.close()
data.close()
処理手順と内容
開始タグがあればhandle_starttagメソッド呼び出し
終了タグがあればandle_endtagメソッド呼び出し
タグ内にデータがあればhandle_dataメソッドで処理
タグ内にデータがあればhandle_commentメソッドで処理
①~④を繰り返し行います

サンプルプログラムの実行結果は下記の通りです。(長いので一部抜粋)
このように、HTML内の各タグの情報を切り分けて取得できます。

開始タグ : li [('id', 'menu-item-181'), ('class', 'menu-item menu-item-type-taxonomy menu-item-object-category menu-item-181')]
開始タグ : a [('href', 'https://python.joho.info/category/robotics/')]
データ: ロボット工学
終了タグ : a
終了タグ : li
【Python/HtmlParser】HTML解析(パース)
Python3の標準ライブラリ「HtmlParser」を用いて、HTML解析(パース)する方法とソースコードについて紹介します。
【Python超入門】使い方とサンプル集
Pythonの使い方について、基礎文法から応用例まで入門者向けに解説します。

コメント