2015年11月16日月曜日

node.jsでRSSをパースする

このエントリーをはてなブックマークに追加
この前までクローリングとかやったので、今度はRSSをパースしてみる。

ここでnodeでXMLを読み込む際に便利なxml2jsをインストールしておく
# /usr/local/node/bin/npm install xml2js
xml2js@0.4.15 node_modules/xml2js
├── sax@1.1.4
└── xmlbuilder@4.1.0 (lodash@3.10.1)

今回は地元の大阪の週間天気を取り出すことにした。内容はこちら

取得したRSSをパースして天気の内容を取りだす。
// 大阪の週間天気予報RSS
var RSS = "http://rss.weather.yahoo.co.jp/rss/days/6200.xml";

// モジュールの読み込み
var parseString = require('xml2js').parseString;
var request = require('request');

// RSS取得
request(RSS, function(err, response, body){
 if(!err && response.statusCode == 200){
  analyzeRSS(body);
 }
});

// 関数定義
function analyzeRSS(xml){
 // XMLをJSのオブジェクトに変換
 parseString(xml, function(err, obj){
  // エラー処理
  if(err){
   console.log(err);
   return;
  }
  
  // RSS内のあるrss要素の下のchannel要素のitemをすべて取り出す
  var items = obj.rss.channel[0].item;
  
  // item要素の数だけループさせる
  for(var i in items){
   var item = items[i];
   // item内のtitle要素をコンソールに表示
   console.log(item.title[0]);
  }
 });
}

取得した結果はこちら。

# /usr/local/node/bin/node tenki.js
【 16日(月) 大阪(大阪) 】 晴れ - 22℃/12℃ - Yahoo!天気・災害
【 17日(火) 大阪(大阪) 】 曇後雨 - 22℃/14℃ - Yahoo!天気・災害
【 18日(水) 大阪(大阪) 】 曇時々雨 - 21℃/16℃ - Yahoo!天気・災害
【 19日(木) 大阪(大阪) 】 曇時々雨 - 19℃/13℃ - Yahoo!天気・災害
【 20日(金) 大阪(大阪) 】 曇時々晴 - 19℃/11℃ - Yahoo!天気・災害
【 21日(土) 大阪(大阪) 】 晴時々曇 - 18℃/10℃ - Yahoo!天気・災害
【 22日(日) 大阪(大阪) 】 曇時々晴 - 19℃/11℃ - Yahoo!天気・災害
【 23日(月) 大阪(大阪) 】 曇り - 19℃/13℃ - Yahoo!天気・災害
【 大阪市 】警報・注意報はありません - Yahoo!天気・災害
【 北大阪 】警報・注意報はありません - Yahoo!天気・災害
【 東部大阪 】警報・注意報はありません - Yahoo!天気・災害
【 南河内 】警報・注意報はありません - Yahoo!天気・災害
【 泉州 】警報・注意報はありません - Yahoo!天気・災害

0 件のコメント:

コメントを投稿