2015-01-19 6 views
1

Я пытаюсь загрузить и разобрать файл csv в CasperJS с помощью papa parse.Как разобрать CSV в CasperJS с Parse Parse?

Это код для выполнения этой задачи

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(); 

$input внутри evaluate виден, но $results равно нулю, а также $result в последней команде.

Есть ли лучший способ загрузки и разбор CSV-файла в CasperJS. Как можно позвонить Papa.parse за пределами evaluate(), так как я просто хочу загрузить локальный файл csv.

+0

Как print_r() в php. Да, я вижу console.log изнутри. Внутренняя оценка console.log заключается в том, чтобы проверить, есть ли что-то, что происходит внутри оценки. – leu

+0

Его не весь сценарий. Просто эта часть не работает. У меня есть функция print_r(), которая не является проблемой. – leu

+0

Это будет весь скрипт, по крайней мере, часть, которая не работает, «11111 ....» видна, включая вход. '222222 ...' не отображается, даже строка 2. '333333 ...' видна, но результат === null – leu

ответ

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 делает то, что он должен делать.

 Смежные вопросы

  • Нет связанных вопросов^_^