JavaでGoogle Newsのフィードを取得する
早めの5月病が来たみたいです、
どうもわせです(^_^;A
今回はJavaでXML(RSS)形式のGoogle Newsを読み込み、
RSSのタイトルとその記事へのリンク、記事の更新日時を表示するプログラムを作成しました。
やったこと
プログラムはここを参考に…
[Java]RSSを読み込んで表示するプログラムをさっくり作る - モガ•モボ
いざ解析!と思ったんですがGoogle Newsって表向きにはRSS配信していないんですね(ー'`ー ; )
(Yah○○はご丁寧にリストアップしてくれているのに… - http://headlines.yahoo.co.jp/rss/list)
ってな感じでどうしようとりあえずYahooでやるか…と思ってた矢先にこんな記事を発見
GoogleニュースのRSSを取得する方法 - teblog::Diary
内心キタ━━━(゚∀゚)━━━!!!!って感じでしたねw
今回は取得したいRSSのURLをString型の引数として
それを解析して記事のタイトルとそのリンク、記事の更新日時を表示するクラスを作成しました
↓以下ソースコード Analysis_RSS.java
使用したURL
http://news.google.com/news?hl=ja&ned=us&ie=UTF-8&oe=UTF-8&output=rss&topic=h
import java.io.IOException;import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class Analysis_RSS {
public Analysis_RSS(String rss_url){
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(rss_url);
// ドキュメントのrootを取得
Element root = document.getDocumentElement();
// root直下の"channel"に含まれるノードリストを取得
NodeList channel = root.getElementsByTagName("channel");
// "channel"直下の"title"に含まれるノードリストを取得
NodeList title = *1.getElementsByTagName("title");
// タイトルを表示
System.out.println("タイトル : "+ title.item(0).getFirstChild().getNodeValue());
System.out.println("-----------------------------------------");
// 各"item"内のノードリストを取得
NodeList itemlist = root.getElementsByTagName("item");
// itemの数だけループさせて全てのitemを取得
for(int i=0; i < itemlist.getLength(); i++){
Element element = (Element)itemlist.item(i);
// "title","link","pubDate"を取得
NodeList item_title = element.getElementsByTagName("title");
NodeList item_link = element.getElementsByTagName("link");
NodeList item_pdate = element.getElementsByTagName("pubDate");
// 各要素を表示
System.out.println(item_title.item(0).getFirstChild().getNodeValue());
System.out.println(item_link.item(0).getFirstChild().getNodeValue());
System.out.println(item_pdate.item(0).getFirstChild().getNodeValue());
System.out.println("-----------------------------------------");
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
実行すると…(2013/3/30 14:34現在)
タイトル : Top Stories - Google News
-----------------------------------------
石原氏「軽い脳梗塞だった」 議員辞職を否定 - MSN産経ニュース
Sat, 30 Mar 2013 04:57:10 GMT
-----------------------------------------
普天間の返還時期「交渉中」 首相、期限設定へ意欲 - 朝日新聞
Sat, 30 Mar 2013 05:04:35 GMT
-----------------------------------------
首都高の上、ぐるり「天空庭園」 東京・目黒に完成 - 朝日新聞
Sat, 30 Mar 2013 04:07:29 GMT
-----------------------------------------
葛飾区にキャプテン翼の銅像完成!街の活性化期待 - テレビ朝日
Sat, 30 Mar 2013 03:51:48 GMT
-----------------------------------------
オウム死刑囚3人証人尋問決定 平田信被告の裁判 - テレビ朝日
Fri, 29 Mar 2013 23:06:18 GMT
-----------------------------------------
総理官邸初の一般公開 地元の中学生を招待 - テレビ朝日
Sat, 30 Mar 2013 05:18:14 GMT
-----------------------------------------
新型出生前診断、勧誘はがきの会社が事業を中止 - 読売新聞
Sat, 30 Mar 2013 01:48:16 GMT
-----------------------------------------
首に複数の切り傷…ベトナム人女性殺害で捜査本部 - テレビ朝日
Sat, 30 Mar 2013 03:51:48 GMT
-----------------------------------------
東日本大震災:コウナゴ漁の試験操業開始−−相馬沖 /福島 - 毎日新聞
Sat, 30 Mar 2013 01:33:25 GMT
-----------------------------------------
汚染水処理新設備きょうから試運転 福島第一原発 - テレビ朝日
Sat, 30 Mar 2013 03:51:47 GMT
-----------------------------------------
とまあこんな感じに最低限のことはできました(^_^;
Java Rome
とまあこんな感じで一通りできてやったーなんて一段落ついてたら
Java Romeというものを見つけまして、どうもコイツを使うと
もっと簡単にRSSを扱えるらしいので検索_φ(。_。*)
…
……
………めっちゃ簡単じゃないすかΣ(゜∀゜ノ)ノ
またいい物を見つけてしまった…w
今後の目標
同ゼミの友達がめっちゃ頑張ってるので俺も今からエンジンフルスロットルで頑張ろう(ノ゜0゜)ノ
*1:Element)channel.item(0