【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://algorithm.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://algorithm.joho.info/category/robotics/')]
データ: ロボット工学
終了タグ : a
終了タグ : li
【Python/HtmlParser】HTML解析(パース)
Python3の標準ライブラリ「HtmlParser」を用いて、HTML解析(パース)する方法とソースコードについて紹介します。
【Python入門】使い方とサンプル集
Pythonとは、統計処理や機械学習、ディープラーニングといった数値計算分野を中心に幅広い用途で利用されている人気なプログラミング言語です。主な特徴として「効率のよい、短くて読みやすいコードを書きやすい」、「ライブラリが豊富なのでサクッと...

コメント

タイトルとURLをコピーしました