ウェブページ(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 パッケージを攻略しよう。