APIが存在しないWebサイトから情報を自動取得する方法として、Webスクレイピングを使う。
Jsoupというライブラリがシンプルで使いやすい。 取得したページの要素をjQuery風のセレクタを使って取得することができる。 http://jsoup.org/
通常のスクレイピングはサイトに掲載されているExampleの通りに 書いてすぐに実現できるのだけど、ログインしてからその情報を保持したまま サイト内の他のページにアクセスする方法がなかなか見つからなかったので、 サンプルを記載しておく。
ログイン時に発行されるCookieを取得し、それを他のページにアクセスする際に リクエストに含めることで実現することができた。
こちらのJavaコードを参考にGroovyで書いてみた。 JsoupでTwitterのタイムラインを取得してみる
サンプルスクリプト
@Grapes( @Grab(group='org.jsoup', module='jsoup', version='1.7.3') ) import org.jsoup.* def baseUrl = 'http://<テストURL>' def loginUrl = baseUrl + '/<ログイン画面のURL>' def mainUrl = baseUrl + '/<ログイン後に閲覧したいURL>' //ログイン処理を実行し、発行されたクッキーを取得する def cookies = Jsoup.connect(loginUrl) .data('loginid', '<ログインID>') .data('password', '<パスワード>') .followRedirects(false) .userAgent('Mozilla') .method(Connection.Method.POST) .execute() .cookies() //println(cookies) //目的のページを開く際に取得したクッキーを設定する def conn = Jsoup.connect(mainUrl).userAgent('Mozilla') for (cookie in cookies) { conn.cookie(cookie.key, cookie.value) } mainDoc = conn.get() //println mainDoc //取得したHTMLを使って要素を取得したりできる def newsTable = mainDoc.select('#news-table') println newsTable

Spidering hacks―ウェブ情報ラクラク取得テクニック101選
- 作者: Kevin Hemenway,Tara Calishain,村上雅章
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2004/05
- メディア: 単行本
- 購入: 52人 クリック: 904回
- この商品を含むブログ (104件) を見る