GoogleBlog検索とRSSとJava
GoogleAPIからGoogleBlog検索を利用することはできない。でも使いたい。ということで無理やり使ってみた。
GoogleBlog検索は、検索結果をRSSで取得することができる。RSSを取得して、Javaでパースしてあげれば、検索結果を扱うことができる。
RSSライブラリにinforma、URLエンコーダにCommonsCodecを使って実装してみた。
import java.io.IOException;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Collection;import org.apache.commons.codec.net.URLCodec;
import de.nava.informa.core.ChannelIF;
import de.nava.informa.core.ItemIF;
import de.nava.informa.core.ParseException;
import de.nava.informa.impl.basic.ChannelBuilder;
import de.nava.informa.parsers.FeedParser;public class GoogleRssUtil {
public String readGoogleBlogRss(String keyword) {
String rssStr = "";
try {
URLCodec encode = new URLCodec();
// 文字列をエンコードする
String enStr = encode.encode(keyword);
// GoogleBlog検索のURLを作る
URL url = new URL("http://blogsearch.google.co.jp/blogsearch_feeds?hl=ja&q="
+ enStr + "&lr=lang_ja&ie=utf-8&num=10&output=rss");// RSSを取得する
ChannelIF channel = FeedParser.parse(new ChannelBuilder(), url);
// RSSのタイトルを取得する
rssStr = rssStr + channel.getTitle();
// RSSの各内容をCollectionに格納する
Collection list = channel.getItems();
// RSSの各内容を取得する
ItemIF[] items = (ItemIF[]) list.toArray(new ItemIF[0]);
String itemStr = "";
// くるくる回して内容を取ってくる
for (int i = 0; i < items.length; i++) {
String title = items[i].getTitle();
String urlStr = items[i].getLink().toString();
String desc = items[i].getDescription();SimpleDateFormat sdf = new SimpleDateFormat("yyyy'/'MM'/'dd'/ 'HH':'mm");
String date = sdf.format(items[i].getDate());
itemStr = itemStr +
"title" + title +
"desc " +desc +
"desc " +date ;
}
rssStr = rssStr + itemStr;
return rssStr;} catch (IOException e) {
e.printStackTrace();
return rssStr;
} catch (ParseException e) {e.printStackTrace();
return rssStr;
} catch(Exception e){
e.printStackTrace();
return rssStr;
}
}}
わざわざinformaやCommonsCodecを使った理由はまた今度。