1

papa parse を使用して CasperJS に csv ファイルを読み込んで解析しようとしています。

これはそのタスクのコードです

var casper = require('casper').create({   
    verbose: true, 
    logLevel: 'debug',
    userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:34.0) Gecko/20100101 Firefox/34.0',
    pageSettings: {
        loadImages:  true,
        loadPlugins: false,
        webSecurityEnabled: false     
    },
    clientScript: [
        'jquery-2.1.3.min.js',
        'jquery.csv-0.71.min.js',
        'papaparse.min.js'
        ],

    viewportSize: {
        width: 1440,
        height: 900
    }
});

var fs = require('fs');

casper.on('remote.message', function(msg) {
    this.echo('remote message caught: ' + msg);
});

casper.start();

casper.then(function(){

    var input = fs.read('order4.csv');

    var config = {
        delimiter: "",  // auto-detect
        newline: "",    // auto-detect
        header: true,
        dynamicTyping: false,
        preview: 0,
        encoding: "",
        worker: false,
        comments: false,
        step: undefined,
        complete: undefined,
        error: undefined,
        download: false,
        skipEmptyLines: true,
        chunk: undefined,
        fastMode: undefined
    }

    var a = {'config' : config, 'input' : input}

/*    var result = this.evaluate(function(input) {
            //console.log(input);
            var results = jquery.csv.toObjects(input);
            console.log(results);
            return results;
        },input);*/

    //var result = Papa.parse(a['input'],a['config']);


    var result = this.evaluate(function(a) { 
        console.log('111111111111111111111' + a['input']);
        var results = Papa.parse(a['input'],a['config']);
        console.log('2222222222222222222' + results);

        return results;
    },a);

    this.echo('333333333333333' + result);
});

casper.run();

$inputinsideevaluateは表示されますが、最後のコマンド$resultsと同様に nullです。$result

CasperJS で csv ファイルを読み込んで解析するより良い方法はありますか。ローカルのcsvファイルをロードしたいだけなので、Papa.parse外部で呼び出すにはどうすればよいですか。evaluate()

4

1 に答える 1

4

Papa Parse は外部コンテキストで動作するようですので、使用する必要はありませんevaluate

完全なスクリプトは次のとおりです。

var fs = require('fs');
eval(fs.read('papaparse.min.js'));

var config = {
    delimiter: "",  // auto-detect
    newline: "",    // auto-detect
    header: true,
    dynamicTyping: false,
    preview: 0,
    encoding: "",
    worker: false,
    comments: false,
    step: undefined,
    complete: undefined,
    error: undefined,
    download: false,
    skipEmptyLines: true,
    chunk: undefined,
    fastMode: undefined
};

console.log(JSON.stringify(Papa.parse(fs.read('order4.csv'), config), undefined, 4));

phantom.exit();

evalこの場合、papaparse.min.js が実際に行うべきことを実行することがわかっている場合、これは悪いことではありません。

于 2015-01-19T18:23:13.367 に答える