rss-parser を使って Node.js で RSS を JSON に変換する

Node.js で RSS を取得して扱おうと思い調べたところ、rss-parser というライブラリが使いやすかったので紹介。

# インストールはいつもどおり。
$ npm install --save rss-parser

以下のようなサンプルスクリプトを書いてみる。

const RssParser = require('rss-parser');

const rssParser = new RssParser();

// 試しにスラッシュドットジャパンの RSS フィードの URL を指定する
rssParser.parseURL('http://slashdot.jp/slashdotjp.rss')
  .then((feed) => {
    console.log('RSS 取得成功', feed);
  })
  .catch((error) => {
    console.error('RSS 取得失敗', error);
  });

このようにすると、feed プロパティに RSS フィードの内容が含まれている。RSS は XML 形式なので、feed プロパティから JSON オブジェクト (連想配列) の形でタグ名を辿っていくと、中身が取得できる。

大抵はこのように、フィードの URL を指定してパースすると思うが、RSS フィードの文字列からの変換も可能だ。次のコードは RSS ファイルをローカルに用意しておき、その中身を参照してみた。

const RssParser = require('rss-parser');
const fs = require('fs');

// ファイルを読み込んで文字列で取得する
const rssFile = fs.readFileSync('./my-feed.rss', 'utf8');

rssParser.parseString(rssFile)
  .then((feed) => {
    console.log('RSS 取得成功', feed);
  })
  .catch((error) => {
    console.error('RSS 取得失敗', error);
  });

とてもお手軽。これで簡単に、RSS フィードをスクレイピングしてあれやこれやできそう。