LoginSignup
12
12

More than 5 years have passed since last update.

PythonでHTMLタグをstripする

Posted at

PHPではstrip_tagsという関数でString中のHTMLタグを簡単に除去できますが、Pythonでは標準の方法が用意されておらず自分で実装する必要があります。

ごりごり正規表現を書くのもあれなので、なにかいい方法がないか探してみました。


結果、調べてみた中ではこれが一番よさげ
http://stackoverflow.com/questions/753052/strip-html-from-strings-in-python

from HTMLParser import HTMLParser

class MLStripper(HTMLParser):

    def __init__(self):
        self.reset()
        # stripしたテキストを保存するバッファー
        self.fed = []

    def handle_data(self, d):
        # 任意のタグの中身のみを追加していく
        self.fed.append(d)

    def get_data(self):
        # バッファーを連結して返す
        return ''.join(self.fed)

def strip_tags(html):
    s = MLStripper()
    s.feed(html)
    return s.get_data()

利点としては

  • 標準ライブラリだけで済むこと
  • 不完全なHTMLでもそこそこ動いてくれること

欠点としては

  • >&といった実体参照まで消えてしまうこと

が挙げられます。

HTMLの一部でもちゃんと動いてくれますし、一般的な用途であればこの方法で十分ではないでしょうか。

パフォーマンス等については未検証です。

12
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
12