Python を使って HTML 文書から HTML タグを取り除くには sgmllib モジュールを使います。
sgmllib
は SGML 形式のテキストファイルを解析する SGMLParser クラスが定義されています。
SGML は HTML や XML のスーパーセットにあたるマークアップ言語なので ``SGMLParser`` は SGML の派生言語である HTML や XML 文書を解析できる のです。
sgmllib
を用いるメリットは Python の標準モジュールであるということです。
独自の正規表現を用いて解析するよりも安心です。
安全性を確かめたければ PYTHONPATH
にある sgmllib.py を読めば良いのです。
インターネットで見つけたソースコードを以下に引用します。
import sgmllib
class Stripper(sgmllib.SGMLParser):
def __init__(self):
sgmllib.SGMLParser.__init__(self)
def strip(self, some_html):
self.theString = ""
self.feed(some_html)
self.close()
return self.theString
def handle_data(self, data):
self.theString += data
stripper = Stripper()
print stripper.strip("<tag>some boring <a>text</a> goes here</tag>")
SGMLParser
はマークアップ要素の開始タグ、終了タグなどを処理するハンドラを定義して使います。
つまり タグが出現するイベントの処理を定義しない ことでデータだけを取り出すのです。
上記のソースコードでデータに対するハンドラが handle_data()
メソッドです。
開始タグのハンドラ handle_starttag()
と終了タグのハンドラ handle_endtag()
は定義されていません。
handle_data()
にはタグで囲まれたデータが、引数 data
として渡されます。
ですからタグに囲まれた部分だけを取得することで、実質的にタグを取り除くことができるのです。
HTMLParser を使っても同じ事ができます。
最終更新日: 2015年05月16日(土)