node.jsのFeedParserライブラリを使ってみる
node.jsでRSSを取得したかったので試しに使ってみる
インストール
パッケージのインストール
npm install feedparser
ソースコード例
readable stream でRSSのjsonを取得できる http://nodejs.org/api/stream.html#stream_class_stream_readable
feed.js
// feedparser - https://www.npmjs.org/package/feedparser var FeedParser = require('feedparser') , request = require('request'); var req = request('http://b.hatena.ne.jp/entrylist?sort=hot&mode=rss') , feedparser = new FeedParser(); // new FeedParser([options])でoptions設定 req.on('error', function (error) { // リクエストエラー処理 }); req.on('response', function (res) { var stream = this; if (res.statusCode != 200) { return this.emit('error', new Error('Bad status code')); } stream.pipe(feedparser); }); feedparser.on('error', function(error) { // 通常のエラー処理 }); feedparser.on('readable', function() { // 処理ロジックを書く // metaプロパティはfeedeparserインスタンスのコンテキストに常に置き換える var stream = this , meta = this.meta , item; while (item = stream.read()) { console.log(item); } });
実行
はてなブックマークのホットエントリーのRSSをリクエストURLとして実行
$ node feed.js { title: '詐欺容疑:独身装い末期がん女性に接近、276万円奪う - 毎日新聞', description: '<blockquote cite="http://mainichi.jp/select/news/20140909k0000m040104000c.html" title= ・・・ 'rdf:description': { '@': {}, '#': '新着エントリー' }, 'rdf:items': { '@': {}, seq: [Object] } } }
取得できた。
タイトルやリンクが欲しい時は、
feedparser.on('readable', function() { var stream = this , meta = this.meta , item; while (item = stream.read()) { // タイトルとリンクを取得 console.log(item.title + "\t" + item.link); } });
として実行すると、
$ node feed.js OM-D E-M5と単焦点レンズで撮る中秋の名月(のイベント) - Hirolog@茨城 http://www.hirolog-ibaraki.net/entry/moon 豪が潜水艦購入間近か―日本、戦後初の武器輸出に - WSJ http://jp.wsj.com/news/articles/SB10001424052970204707704580141643283765392 卵を割らずにそのまま2分間攪拌することでプリンができる「おかしなたまご まわしてまわしてまるごとプリン」を使ってみました - GIGAZINE http://gigazine.net/news/20140908-egg-pudding/ 「iWatch」Appleのウェアラブルデバイスの噂まとめ - マガデジブログ http://www.magadigi.com/2014/09/iwatch-apple-uwasa.html 詐欺容疑:独身装い末期がん女性に接近、276万円奪う - 毎日新聞 http://mainichi.jp/select/news/20140909k0000m040104000c.html ・・・
簡単!!
その他取得できるプロパティ一覧
title
description
link
xmlurl
date
pubdate
author
language
image
copyright
generator
categories
参考
feedparser https://www.npmjs.org/package/feedparser
Github サンプルコード (danmactough/node-feedparser) https://github.com/danmactough/node-feedparser/tree/master/examples