本記事(記事カラム)には広告が含まれています。

HTMLファイルに含まれているtilteタグの中身を表示|Python 練習 17

人気ブログランキングテキスト
記事内に広告が含まれています。
人気ブログランキングテキスト

tkinter でHTMLファイルを選択し、そのファイルに含まれている<tilte>タグの中身を表示します。

DMM FX広告(差し込みタイプ)
広告(PR)|自分の投資スタイルを見つける。※タップで開閉
広告(PR)

DMM FXは、「最初の一歩を踏み出す場」として選ばれることがある

口座を開いてみた。取引してみた。思ったよりも難しかった。──そんな経験が、投資との距離感を知るきっかけになることもあります。


サービスを通じて、自分の投資スタイルを見つける。それは、確信ではなくても構いません。「試してみた」という実感が、次の選択の材料になることもあるからです。


DMM FXに関する詳細は、以下の広告(PR)リンクをご覧いただけます。


👇こちらは広告(PR)リンクバナーです

DMMFX

人気ブログランキングテキスト

実際に書いたコード

import tkinter as tk
from tkinter import filedialog
from bs4 import BeautifulSoup


def extract_title(path):
    with open(path, "r", encoding="utf-8", errors="ignore") as f:
        html = f.read()

    soup = BeautifulSoup(html, "html.parser")
    title_tag = soup.find("title")

    if title_tag:
        return title_tag.text.strip()
    else:
        return "タイトルタグが見つかりませんでした"


def select_file():
    path = filedialog.askopenfilename(
        filetypes=[("HTML Files", "*.html *.htm"), ("All Files", "*.*")]
    )
    if not path:
        return

    title = extract_title(path)
    title_label.config(text=f"{title}")


root = tk.Tk()
root.title("HTMLファイルの <title>タグの中身を表示")
root.geometry("600x200")


text_label_0 = tk.Label(
    root, text="<title>タグの中身を表示します。", font=("Meiryo", 12)
)

text_label_0.pack(pady=15)

btn = tk.Button(root, text="ファイルを選ぶ", command=select_file, font=("Meiryo", 12))
btn.pack(pady=20)


title_label = tk.Label(root, text="", font=("Meiryo", 12))
title_label.pack()

root.mainloop()

解説

ローカル HTML ファイルから <title>タグの内容のみを抽出して表示します。

Tkinter ベースの簡易 GUI ツール。 HTML パースには BeautifulSoup を使用。

依存ライブラリ

  • tkinter(標準)
  • bs4(BeautifulSoup) pip install beautifulsoup4

ファイル構成

単一ファイルで構成。 GUI(Tkinter)と HTML 抽出ロジック(BeautifulSoup)を分離した最小構成。

主な関数

extract_title(path)

HTML ファイルを読み込み、BeautifulSoup で <title> タグを抽出して返します。

select_file()

ファイル選択ダイアログを開き、選択された HTML の <title> を抽出して GUI に反映。

GUI 構成

フォント指定の理由

font=("Meiryo", 12)
  • Windows で日本語を確実に表示する
  • Tkinter のデフォルトフォントは日本語が潰れることがある
  • Meiryo は OS 標準で可読性が高い

pady を付けている理由

text_label_0.pack(pady=15)
  • Tkinter の pack() はデフォルトで 上詰め配置
  • そのままだと UI が上に張り付き、視認性が悪い
  • pady で上下の余白を確保し、最低限のレイアウト調整を行うため

注意点

  • BeautifulSoup が未インストールの場合、GUI 起動前に import エラーで停止する
  • <title> が存在しない HTML ではメッセージを返す仕様
  • レイアウトは pack() のみで構成

実行結果

Auto Py to Exe で、Windowsのexeアプリ化して、実行。

テスト用のHTMLファイル

<!DOCTYPE html>
<html lang="ja">

<head>
    <meta charset="UTF-8">
    <title>これはテスト用のタイトルです</title>
</head>

<body>
    <h1>HTML タイトル抽出テスト</h1>
    <p>このファイルは Python の BeautifulSoup と Tkinter の動作確認用です。</p>
</body>

</html>

人気ブログランキング ブログパーツ

もしも


人気ブログランキングバナー

人気ブログランキング

人気ブログランキングテキスト