LYNCSブログ

慶應義塾大学公認学生団体 宇宙科学総合研究会(LYNCS)のブログです。

JSONファイルを定期的に取得・保存したい (Node.js)

個人タスクで発生した備忘録です。

JSONを採取したい

東京メトロのオープンデータでは、JSON形式で運行情報などを取得できます。 実際の運行情報の事例を収集して解析の対象とするために簡単なスクリプトを書きました。

使用するもの

  • Node.js
  • date-utils
  • cheerio-httpcli
    • DOM解析するわけではないですが、単にエンコードとかの取り扱いが楽になるので。

コード

require('date-utils');
const cheerio = require('cheerio-httpcli');
const fs = require('fs');

var datetime = new Date().toFormat('YYYY-MM-DD-HH24_MI_SS');
var filename = datetime + '.json';
var savepath = './saved_json/' + filename;

cheerio.fetch('***input URL here***', 'utf-8', function (err, $, res, body) {
    //今回はダイヤ乱れなどの情報がある場合のみJSONを保存したいので
    if ($.html().search(/のため/) != -1){ 
        fs.writeFileSync(savepath, $.html(), 'utf8');
    }   
});

定期実行

言わずもがな、cronに登録します。 筆者はラズパイで走らせています。ラズパイが1台あれば気軽にcron回せるのでおすすめです。

(ryo-a)