Top > Groovy Blog Index > ウェブページ(HTML)をプレーンテキストに変換する

ウェブページ(HTML)をプレーンテキストに変換する

自分のサイトのコンテンツを全文検索できるようにしたいと 思いたったのだが、 そのために最初にやることは、 HTMLからテキスト部分だけを抜き出すこと。

w3m を使うとか、Python + Beautifulsoup で、とか いろいろ手軽な方法は考えられるのだが、 groovyでツールはまとめていきたいのでその場合はどうすればいいのか?

Java 純正のHTML Parser (javax.swing.text.html.parser あたり) もあるのですが、結構使いづらかったです。

htmlparser を使う

結論としては、 htmlparser を使えば簡単にできそうです。

以下のような感じで使える toPlainText.groovy を書いてみました。

$ groovy toPlainText http://groovy.my-notebook.net/htmlparser.html
自分のサイトのコンテンツを全文検索できるようにしたいと
思いたったのだが、
そのために最初にやることは、
HTMLからテキスト部分だけを抜き出すこと。
...

toPlainText.groovy

ポイントは、フィルタの指定。 たとえば、h1,h2,p 要素を狙って取得したければ、 以下のように org.htmlparser.filters.OrFilter を使えばOK.

def f1 = new TagNameFilter('h1')
def f2 = new TagNameFilter('h2')
def f3 = new TagNameFilter('p')
def filter = new OrFilter( [f1,f2,f3].toArray(new NodeFilter[0]) )

org.htmlparser.filters パッケージを攻略しよう。