Hatena::ブログ(Diary)

ゲンゾウ用ポストイット-new このページをアンテナに追加 RSSフィード Twitter

2011-10-14

サイトのhtmlをXmlSlurperで処理する

| 02:07 | サイトのhtmlをXmlSlurperで処理するを含むブックマーク サイトのhtmlをXmlSlurperで処理するのブックマークコメント

最近ではxhtmlでかかれたサイトが多くなったが、サイトのhtmlxhtmlであることを前提に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の使い方になれず未だに以下のサイトを手放せない)

Groovy - Reading XML using Groovy’s XmlSlurper


参考

Parsing HTML with Groovy and HTMLCleaner

Ubuntuでログイン後、.Xmodmapが読み込まれずに困っている場合

| 01:54 | Ubuntuでログイン後、.Xmodmapが読み込まれずに困っている場合を含むブックマーク Ubuntuでログイン後、.Xmodmapが読み込まれずに困っている場合のブックマークコメント

家にはUbuntuマシンが3台あるのだが、1台だけxdmでログイン後、.Xmodmapが自動的に読み込まれずに困っていた。

$ cd
$ ll .Xmodmap
$ lrwxrwxrwx 1 genzou 26 2011-09-12 23:39 .Xmodmap -> myconfig/.Xmodmap # myconfigで各種設定ファイルを一元管理している

しかたがないのでログイン後毎回以下のコマンドを叩いていた。

$ cd
$ xmodmap .Xmodmap #.Xmodmapを読み込み

ちょっとググったら、ずばりの対応方法がかかれていた。

Ubuntu 9.04 でキー割り当て(キーボード配列)を変更 - 起動時に .Xmodmap が自動で読み込まれないときは? - 彼女からは、おいちゃんと呼ばれています

ちょいちょいこのgconf-editorなるものを触って設定を書き換える機会が発生するが、Linux的じゃないような気がしてならない。

fumokmmfumokmm 2011/11/01 12:45 妥当性懸賞になってます!

genzouwgenzouw 2011/11/01 12:50 > fumokmmさん
ありがとうございます。修正しておきました!

genzouwgenzouw 2012/03/30 21:38 =======================================
Facebookに登録するには、こちらをクリックしてください。
http://www.facebook.com/r.php?re=fae14ef9a92a0eb65c8a86be44c6e103&mid=5dfa65cG5af3e2d4890dG0G46&key=AQAKrz3Tm4AIZNfqPwnPxsyWf8Tb5geJFVzSimJFm-VOw_2IL1jbxS_wdu0T4opQe4oxGjhlZVKvq1oq&invid=1471943979
=======================================

こんにちは

次の人からFacebookの友達になりませんかという招待がありました。

Toshiaki Wakabayashi (Invite sent: Feb 27, 2012)

Facebookでは友達と連絡を取ったり、写真や動画を投稿したり、イベントを企画したりできます。まずは登録してみてください。自分のプロフィールを作って、友達や家族と情報をやり取りしましょう。

よろしくお願いいたします。
Facebookチーム

Facebookに登録するには、こちらをクリックしてください。
http://www.facebook.com/r.php?re=fae14ef9a92a0eb65c8a86be44c6e103&mid=5dfa65cG5af3e2d4890dG0G46&key=AQAKrz3Tm4AIZNfqPwnPxsyWf8Tb5geJFVzSimJFm-VOw_2IL1jbxS_wdu0T4opQe4oxGjhlZVKvq1oq&invid=1471943979

=======================================
このメッセージはd-comment+i3ta9i51xw.115830729@hatena.ne.jp宛てに送信されました。 今後Facebookからこのようなメールを受け取りたくない場合は、以下のリンクから配信を停止することができます。
http://www.facebook.com/o.php?k=38e1f0&u=100003529132301&mid=5dfa65cG5af3e2d4890dG0G46
Facebook, Inc. Attention: Department 415 P.O Box 10005 Palo Alto CA 94303