雑記まみむメモ

雑記、メモ、技法、話題の騒動などを紹介します。

Node.jsのスクレイピングモジュール「cheerio-httpcli」で電車遅延情報を取得

僕が最近趣味でやるはじめたNode.jsです。

今回はNode.jsでできるスクレイピングの紹介です。

電車の遅延情報の取得をしてみたいと思います。

Node.jsをインストールする

yum install epel-release リポジトリ追加
yum install nodejs npm --enablerepo=epel node.jsをインストール
yum install gcc gcc-c++ c++インストール

スクレイピングモジュール「cheerio-httpcli」インストール

npm install cheerio-httpcli

準備完了。 「cheerio-httpcli」のソースやサンプル

スクレイピングして遅延情報を取得する

var client = require('cheerio-httpcli');
client.setBrowser('chrome');    // GoogleChromeのUser-Agentに変更
client.fetch('http://transit.yahoo.co.jp/traininfo/area/4/')
.then(function (result) {
    var $ = result.$;

    $(".trouble").find("a").each(function(id) {

        client.fetch($(this).attr('href'))
        .then(function (result) {
            var $ = result.$;
            var rail_name = $("h1[class=title]").text();
            var detail = $("#mdServiceStatus > dl > dd > p").text();

            console.log(rail_name + ":" + detail);
        })

    });

});

実行結果

node yahoo_train
上野東京ライン:11:59頃、横須賀線内で発生した人身事故の影響で、現在も一部列車に遅れが出ています。(12月27日 15時00分掲載)
高崎線:11:59頃、横須賀線内で発生した人身事故の影響で、現在も一部列車に遅れが出ています。(12月27日 15時00分掲載)

参考サイト http://qiita.com/you21979@github/items/4efd9fc4363573191b5c http://qiita.com/ktty1220/items/64168e8d416d6d8ffb45