2013年12月11日のすごい広島で「node.jsでjQueryのようにスクレイピングする方法」を調べたので、まとめておきます。

node.jsでjQueryのようなセレクタを使ってスクレイピングする方法ですが、node.jsのパッケージモジュールの「cheerio」を使います。
var $ = require("cheerio").load(htmlData);
var title = $('title').text();
今回はこのブログの「node.jsのテスティングフレームワークであるjasmine-nodeをインストールして使ってみる」をスクレイピングして、ページタイトルを取得するソースコード(scraping.js)を書いてみました。
$ npm install cheerio
scraping.js
(function() {
var _http = require('http');
var _cheerio = require("cheerio"); // スクレイピングするためにHTMLをjQueryのように使えるモジュール
var _URL = 'https://106n.net/toro/blog/?p=1141'; // 取得するWebページ
// Webページを取得
_http.get(_URL, function(res){
var _statusCode = res.statusCode;
console.log(_statusCode)
if(_statusCode != 200) {
// 200ではない場合は失敗
return;
}
var _resData = '';
res.on('data', function (chunk) {
_resData += chunk;
});
res.on('end', function () {
console.log('Get Data Finish!')
parseResponseData(_resData);
});
}).on('error', function(e) {
cosole.log('Error!')
});
function parseResponseData(resData) {
var _ret = {};
// ページデータを読み込む
var $ = _cheerio.load(resData);
// <head>を取り出す
var _$head = $('head');
if(_$head.length < 1) {
console.log('Error: not found head tag.');
return _ret;
}
// <head>の中の<title>を取り出す
var _$title = _$head.find('title');
if(_$title.length == 1) {
var _title = _$title.text(); // これが取りたいデータ
console.log('title : "' + _title + '"');
_ret.title = _title;
}
return _ret;
};
})();
$ node scraping.js 200 Get Data Finish! title : " node.jsのテスティングフレームワークであるjasmine-nodeをインストールして使ってみる — Toroとトロは電子機械の夢を見るか"
はい、できてますね。
参考にしたサイト:node.jsを使ってjQueryチックにWebサイトをクローリングする方法 - なりたい社畜(じぶん)になる
RSSを取得する