1. はじめに
WebスクレイピングやHTMLメール処理などで得られるテキストデータには、しばしば不要なHTMLタグが含まれています。こうしたタグを取り除いて、プレーンなテキストのみを抽出したい場面は多くあります。
本記事では、Pythonで文字列からHTMLタグを除去する方法について、基本的な方法から実務で使える応用例まで丁寧に解説します。初心者でも理解できるよう、コードにはコメントをつけて、実行結果も明示しています。
2. PythonでHTMLタグを削除する基本方法
2-1. 正規表現(reモジュール)を使う
最も基本的な方法は、Python標準ライブラリのre
(正規表現)モジュールを使う方法です。以下はそのサンプルコードです。
import re
html = '<p>こんにちは、<strong>Python</strong>学習者の皆さん!</p>'
# 正規表現でHTMLタグを除去
text = re.sub(r'<.*?>', '', html)
print(text)
実行結果:
こんにちは、Python学習者の皆さん!
2-2. BeautifulSoupで確実に除去
re
モジュールは簡易的ですが、HTML構造が複雑な場合は除去ミスが起こる可能性があります。そこで、HTML解析に特化したライブラリ BeautifulSoup を使う方法が推奨されます。
from bs4 import BeautifulSoup
html = '<div><p>Pythonで<a href="#">Webスクレイピング</a>をしよう!</p></div>'
# BeautifulSoupでパースして、タグを除去
soup = BeautifulSoup(html, 'html.parser')
text = soup.get_text()
print(text)
実行結果:
PythonでWebスクレイピングをしよう!
3. よくある使い方・応用例
3-1. Webスクレイピングの結果を整形
HTMLから不要なタグを除いて、記事本文だけを取得したい場面は多くあります。以下はその例です。
import requests
from bs4 import BeautifulSoup
url = 'https://example.com/sample.html'
response = requests.get(url)
# HTML全体をBeautifulSoupで処理
soup = BeautifulSoup(response.text, 'html.parser')
# 特定の要素(記事本文)を取得
article = soup.find('div', class_='content')
text = article.get_text()
print(text)
実行結果:
(例)これは記事本文です。HTMLタグは除去されました。
3-2. 複数のHTML文字列から一括でタグ除去
リスト形式で取得したHTMLテキストに一括処理するケースもあります。
html_list = [
'<p>こんにちは</p>',
'<div><span>Pythonは楽しい</span></div>',
'<a href="#">リンク</a>'
]
# BeautifulSoupを使って一括で除去
from bs4 import BeautifulSoup
clean_texts = [BeautifulSoup(html, 'html.parser').get_text() for html in html_list]
for text in clean_texts:
print(text)
実行結果:
こんにちは
Pythonは楽しい
リンク
4. 注意点・エラー対策
4-1. 正規表現は簡易的だが非推奨のケースも
正規表現は単純なタグ除去には便利ですが、以下のようなケースではうまく機能しません。
- ネストされたタグ
- 属性付きのタグ
- コメントやスクリプトタグの混在
対応策:
→ HTML構文解析が必要な場合は、必ずBeautifulSoupを使うのが安全です。
4-2. BeautifulSoupでのエンコーディングエラー
Webページによっては、文字化けや文字コードの違いで以下のようなエラーが起こることがあります。
UnicodeEncodeError: 'charmap' codec can't encode character ...
対応策:
response.encoding = response.apparent_encoding
を明示的に指定- ファイル保存時に
encoding='utf-8'
を指定
5. まとめ|PythonでのHTMLタグ除去の学び
この記事では、PythonでHTMLタグを除去する方法として、以下の2通りの手段を紹介しました。
re
モジュールによる正規表現処理BeautifulSoup
を使ったHTML構文解析
特に、実務で信頼性が求められる場面ではBeautifulSoupの利用が鉄則です。Webスクレイピング、メール解析、データ前処理など、プレーンテキストが必要な場面で活躍します。
💡 学習のコツ: 最初は正規表現で簡単な処理から始め、慣れてきたらBeautifulSoupにステップアップしましょう。
ご自身のデータ処理にぜひ役立ててください!