例えば、あるブログのすべてのエントリーのタイトルをブラウザに表示させる、などの処理は実装可能でしょうか?
RSSを読み込むというのは、よくあると思うのですが、それだと新着10件(くらい)までしか取得できないと思います。
すべて読み込む、というのは可能でしょうか?
javaサーブレットに限らず、プログラムを用いれば原理的には読み込むことが可能です。
ただ、ブログのサービスによって、ページ表示用のHTML構造は異なりますからブログサービス毎に、HTML構文を解析して必要な部分を切り出すような処理が必要になるかと思います。
また、HTMLの構文解析後に、次のページ(ある限り)を取得する動作を繰り返すことも必要かと思います。
実装の方法は複数あると思いますが、最も単純に考えると、大体以下のような流れでプログラムしていくことになるかと思います。
2~4辺りはブログサービス毎に別の構文解析を行う必要が出てくるということになります。
javaサーブレットに限らず、プログラムを用いれば原理的には読み込むことが可能です。
ただ、ブログのサービスによって、ページ表示用のHTML構造は異なりますからブログサービス毎に、HTML構文を解析して必要な部分を切り出すような処理が必要になるかと思います。
また、HTMLの構文解析後に、次のページ(ある限り)を取得する動作を繰り返すことも必要かと思います。
実装の方法は複数あると思いますが、最も単純に考えると、大体以下のような流れでプログラムしていくことになるかと思います。
2~4辺りはブログサービス毎に別の構文解析を行う必要が出てくるということになります。
回答ありがとうございます。
なるほど、ブログだから楽な方法があるわけではなく、ページとしてhtmlを読み込ませて、切り出すことになるのですね。
これは、もう一つ質問になってしまうのですが(別の記事として質問したほうがいいのかもしれませんが)、そのようなプログラムを書くのに、参考になる書籍やページや検索のためのキーワードのようなものはあるでしょうか?
そういった処理は実装したことがないので、まったくわからないので…。
他のサイトのデータを丸ごと持ってくるのは,そのサイトに対し,多大な負荷を与える可能性があるので,事前に断ったほうがいいかもしれません.
wget などのソフトでは,サイトを丸ごとコピーできるので,そのデータを解析すれば,全ての記事を取得できます.
サイトのサーバ,ネットワークの性能,記事数などによってかわりますが,全てのデータを取るのに,数分~数時間時には,数日掛かる場合もあります.
サイトのデータを丸ごと取ってくることを,クローリング,ソフトをクローラーと呼ぶこともあります.
実装しなくても,すでにいくつかのクローラー(上記の wget も含め)があるので,そういったプログラムを組み合わせればいいと思います.
目的としては,(SEO関係の) spam 行為が思い浮かぶので,クローリングは慎重になったほうがいいかもしれません.
RSSはデータとしてきれいにまとめてもらったのを見てるだけなので簡単ですが、
すべてとなると、データとしては汚い状態のものを
自分できれいにして、更にデータを抽出することになるので
たぶんかなり泥臭い作業になると思います。
HTMLデータを取ってくるのは簡単で、HttpConnectionクラスなどで
URLをセットして取得すれば文字列で返ってきます。
それをひたすらきれいにして解析するだけです。
HTMLはかなりゆるゆるで、結構間違っててもブラウザで表示出来ちゃったりするので
きれいなデータの状態にするのが大変かもしれませんよ。
技術的にはそんなに厳しい感じではないと思います。
かなりめんどくさいですが。
回答ありがとうございます。
なるほど、ブログだから楽な方法があるわけではなく、ページとしてhtmlを読み込ませて、切り出すことになるのですね。
これは、もう一つ質問になってしまうのですが(別の記事として質問したほうがいいのかもしれませんが)、そのようなプログラムを書くのに、参考になる書籍やページや検索のためのキーワードのようなものはあるでしょうか?
そういった処理は実装したことがないので、まったくわからないので…。