2

node.ioスクレーパーを作成しています。

スクレイプしたいページには、毎分新しいコンテンツがあります。毎分何度も仕事をやりたいです。(bashスクリプトでそれを行うことはできますが、javascriptにとどまりたいです)これは基本的な仕事です:

var nodeio = require('node.io'), options = {timeout: 10};

exports.job = new nodeio.Job(options, {
    input: ['hello', 'foobar', 'weather'],
    run: function (keyword) {
        this.getHtml('http://www.google.com/search?q=' + encodeURIComponent(keyword), function (err, $) {
            var results = $('#resultStats').text.toLowerCase();
            this.emit(keyword + ' has ' + results);
        });
    }
});

どうすればそれができますか?私はnode.jsの初心者です、私は仕事の周りにsetIntervalを試しました(:成功しませんでした。

4

1 に答える 1

3

これを試してください(<myfile.js「node.io <myfile.js>」ではなく「node>」で実行してください):

var nodeio = require('node.io'), options = {timeout: 10};
var job = {
    input: ['hello', 'foobar', 'weather'],
    run: function (keyword) {
        this.getHtml('http://www.google.com/search?q=' + encodeURIComponent(keyword), function (err, $) {
        var results = 'test';//$('#resultStats').text.toLowerCase();
        this.emit(keyword + ' has ' + results);
      });
    }
};

setInterval(function(){
    nodeio.start(new nodeio.Job(options, job), options, function(){});
}, 5000);

発生した問題は、ジョブの実行時にコールバックを提供しない場合にノードを終了するnode.ioの次のコードブロックです。

//Default behaviour is to exit once the job is complete
callback = callback || function (err) {
    if (err) {
        utils.status.error(err);
    }
    process.exit();
};
于 2012-04-25T20:12:42.993 に答える