- PR -

クライアントアプリでログイン後の情報取得

1
投稿者投稿内容
javade
会議室デビュー日: 2006/02/06
投稿数: 4
投稿日時: 2006-02-06 01:22
はじめましてjavadeと申します。

まだ、初心者の域を超えられていない未熟者です。
なので、何かを作って公開してみたいなと思っています。

早速なのですが、mixiとかのようなWebで、
ログインして表示される情報やデータを
javaクライアントアプリで取得する方法が知りたいのですが、
本屋さんにもWeb上にもリソースが見つかりませんでした。

探し方が悪いことは承知していますが、なかなか見つかりません。
ミクチェ(mixiCheckTool)といったツールが実際そういった機能を
実現しているものですが、どうやらVBアプリのようですし、
実装面の解説はないので方法はわかりません。

どなたかわかる方、アドバイスをいただけたらと思います。
よろしくお願いします。
K
大ベテラン
会議室デビュー日: 2004/04/07
投稿数: 174
投稿日時: 2006-02-06 02:59
引用:

早速なのですが、mixiとかのようなWebで、
ログインして表示される情報やデータを
javaクライアントアプリで取得する方法が知りたいのですが、
本屋さんにもWeb上にもリソースが見つかりませんでした。


特定のWEBアプリの専用クライアントを実装したいということですね。
WEBサービス等を用いたデータ取得用の専用インタフェースがない単なるWEBアプリに対するデータ処理は基本的には以下のような流れになると思います。

1.HTTPリクエスト送信
2.HTTPレスポンス受信
3.HTMLのパース処理
4.取得したデータの加工処理

4で必要なデータを好きなように加工するなりクライアント側のDBなりファイルに保存することになります。

1と2に関しては自前で実装するよりもJakartaのHTTPClient等を利用するほうがよいでしょう。HTMLのパース処理も探せば汎用のライブラリがあるかもしれません。
あとはGUIと4のビジネスロジックの実装を行えば完成ですね。

がんばって面白いアプリを作ってみてください。

[補足]
ちょっと的を外した、というか幅の広い回答をしてしまいました。データの取得ということに関してのみであれば、HTTPレスポンスとして返されるHTML(厳密にはHTMLに限りませんが)のパース処理だけですね。
[/補足]

[ メッセージ編集済み 編集者: moge 編集日時 2006-02-06 03:04 ]
javade
会議室デビュー日: 2006/02/06
投稿数: 4
投稿日時: 2006-02-07 01:00
mogeさん

適確な回答ありがとうございます。
Commons HTTPClientの存在は知っていましたが、
まさにこういった場面で使うっていうことは気がつきませんでした。
実は、書き込む前にjava.netパッケージでhtmlを取得する処理を書いてみたりしてた
のですが、やはりそういった手順は踏む必要があるようですね。
HTTPレスポンスである以上仕方がないですね。

地道にHTMLパースライブラリも探してみて、いろいろと試してみようと思います。
こんなに早く回答が得られるとは思いませんでした。
ありがとうございました。

引用:

mogeさんの書き込み (2006-02-06 02:59) より:
引用:

早速なのですが、mixiとかのようなWebで、
ログインして表示される情報やデータを
javaクライアントアプリで取得する方法が知りたいのですが、
本屋さんにもWeb上にもリソースが見つかりませんでした。


特定のWEBアプリの専用クライアントを実装したいということですね。
WEBサービス等を用いたデータ取得用の専用インタフェースがない単なるWEBアプリに対するデータ処理は基本的には以下のような流れになると思います。

1.HTTPリクエスト送信
2.HTTPレスポンス受信
3.HTMLのパース処理
4.取得したデータの加工処理

4で必要なデータを好きなように加工するなりクライアント側のDBなりファイルに保存することになります。

1と2に関しては自前で実装するよりもJakartaのHTTPClient等を利用するほうがよいでしょう。HTMLのパース処理も探せば汎用のライブラリがあるかもしれません。
あとはGUIと4のビジネスロジックの実装を行えば完成ですね。

がんばって面白いアプリを作ってみてください。

[補足]
ちょっと的を外した、というか幅の広い回答をしてしまいました。データの取得ということに関してのみであれば、HTTPレスポンスとして返されるHTML(厳密にはHTMLに限りませんが)のパース処理だけですね。
[/補足]

[ メッセージ編集済み 編集者: moge 編集日時 2006-02-06 03:04 ]

山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-02-07 04:13
これ↓なんか使ったことありますが結構良いです。
http://httpunit.sourceforge.net/

HTTPを使ってサーバに接続して、レスポンスをパースしてJava的なオブジェクトに変換してくれます。
javade
会議室デビュー日: 2006/02/06
投稿数: 4
投稿日時: 2006-02-08 02:15
インギさん
はじめまして。
httpclientを使って、ログインしてhtml取得までできました。

引用:

インギさんの書き込み (2006-02-07 04:13) より:
これ↓なんか使ったことありますが結構良いです。
http://httpunit.sourceforge.net/

HTTPを使ってサーバに接続して、レスポンスをパースしてJava的なオブジェクトに変換してくれます。



httpunitはhtmlパーサの1つとして候補にあげているところでした。
jerichoとhttpunitのどっちかにしようと思っていたのですが、
ちょうどきっかけもできたのでhttpunitでやってみようと思います。

ただ、インギさんが書いているのを見ると、httpclientの代わりにもなるということでしょうか?
ちょっと調べてみます。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-02-08 03:35
ざっとみた理解では HttpClient は HTTP のリクエストとレスポンスをシンプルに扱うためのインターフェースで、jericho は HTML をパースするエンジン、でしょうか?

HttpClientjericho も残念ながらつかったことないのですが、HttpUnit は接続、HTML のパース、セッション(というかクッキー)の管理などしてくれます。
HttpClientjericho のおいしいところをもってきた感じでしょうか。

Javaコードから複数のリクエスト/レスポンスをまたがるブラウザの挙動を簡単に表現できますのでお勧めです。

内部的にjtidyを使っていてレスポンスのhtmlがvalidでなくてもちゃんとパースしてくれるのも気に入ってます。
javade
会議室デビュー日: 2006/02/06
投稿数: 4
投稿日時: 2006-02-09 01:49
引用:

インギさんの書き込み (2006-02-08 03:35) より:
ざっとみた理解では HttpClient は HTTP のリクエストとレスポンスをシンプルに扱うためのインターフェースで、jericho は HTML をパースするエンジン、でしょうか?

HttpClientjericho も残念ながらつかったことないのですが、HttpUnit は接続、HTML のパース、セッション(というかクッキー)の管理などしてくれます。
HttpClientjericho のおいしいところをもってきた感じでしょうか。

Javaコードから複数のリクエスト/レスポンスをまたがるブラウザの挙動を簡単に表現できますのでお勧めです。

内部的にjtidyを使っていてレスポンスのhtmlがvalidでなくてもちゃんとパースしてくれるのも気に入ってます。


これを見る限り、HttpUnitだけで実現できそうな感じですね。
やっぱり、調査の必要がありますね。
パースはXMLのパースみたいな感じでできればいいなぁと期待しているんですがね・・・
今日はちょっと時間がなかったですが、少しずつ進めていこうと思います。
最後までできるかわかりませんが、自分のブログで公開できるものができるといいなと思います。
1

スキルアップ/キャリアアップ(JOB@IT)