サイトのhtmlをXmlSlurperで処理する
最近ではxhtmlでかかれたサイトが多くなったが、サイトのhtmlがxhtmlであることを前提にXmlSlurperで処理しようとすると時々固まってしまう。正しいxhtmlでかかれていない箇所があったりするからだ。
また、DTD定義を探しにいくが、見つからずにエラー、といったこともある。
そこで xhtmlを読み込む前に事前処理を行うことで、サイトのxhtmlを XmlSlurper で処理できる。
ソースコード
#!/usr/bin/env groovy
@Grapes(
@Grab(group='net.sourceforge.htmlcleaner', module='htmlcleaner', version='2.2')
)
import org.htmlcleaner.*
def address = 'http://groovy.codehaus.org/'
def cleaner = new HtmlCleaner()
def node = cleaner.clean(address.toURL())
// htmlをxmlに変換
def props = cleaner.getProperties()
def serializer = new SimpleXmlSerializer(props)
def xml = serializer.getXmlAsString(node)
// DTDの妥当性検証を実施しない設定
def page = new XmlSlurper(false,false).parseText(xml)
// (以下省略)
// ...
ひとこと
ここから先は以下のサイトを参考に page 変数に対して好き勝手にごにょごにょしてあげればOK。(僕はXmlSlurperの使い方になれず)
ディスカッション
コメント一覧
妥当性懸賞になってます!
> fumokmmさん
ありがとうございます。修正しておきました!