読者です 読者をやめる 読者になる 読者になる

No Programming, No Life

新しいNPNLです。http://d.hatena.ne.jp/fumokmm/ から引っ越してきました。

Groovyでスクレイピングしてみる

ウェブサイトのデータを必要な部分だけ抽出して利用すること。

スクレイピングとは - はてなキーワード

Groovyだと簡単にWebからデータを取得できる。
お試しで書いてみたので、一応公開しておく。*1

/*
 * はてなハイクのトップページ(http://h.hatena.ne.jp/)にアクセスし
 * 最新のエントリを投稿したユーザIDを取得し、そのユーザのプロフィールの
 * URLを標準出力へ出力する。
 */
def url = new URL('http://h.hatena.ne.jp/')
def html = url.getText('UTF-8')
def users = html.tokenize('\n').findAll{ it =~ /class="username"/ }
users.each{ user ->
    def words = (user =~ /[\w_-]+/ ).inject([]){ r, i -> r << i }
    assert words[-3] == words[-4], "ユーザID: ${words[-4]}${words[-3]} は同じはず"
    def userid = words[-3]
    println "http://www.hatena.ne.jp/${userid}/"
}

たったこれだけで書けちゃうのが素敵。
応用次第ではかなり有用なことができそう。

*1:groovyConsoleにコピペでも動きます。