Ecrire les résultats dans un fichier en utilisant CasperJS
comment créer un fichier dans le système de fichiers et placer le contenu de this.getPageContent()
à l'intérieur?
42
demandé sur
narek
2012-10-10 23:09:50
4 réponses
var fs = require('fs');
fs.write(myfile, myData, 'w');
pour l'enregistrement quotidien des éraflures je fais:
var currentTime = new Date();
var month = currentTime.getMonth() + 1;
var day = currentTime.getDate();
var year = currentTime.getFullYear();
var myfile = "data-"+year + "-" + month + "-" + day+".html";
69
répondu
Henry
2012-10-11 18:28:41
Vous pouvez aussi ajouter à un fichier texte en utilisant la méthode ci-dessous
var casper = require('casper').create();
var fs = require('fs');
var fname = new Date().getTime() + '.txt';
var save = fs.pathJoin(fs.workingDirectory, 'nwaomachux', fname);
casper.start('http://www.po3w.com/', function() {
fs.write(save, this.getTitle() + '\n', 'w');
});
casper.thenOpen('http://phantomjs.org', function() {
fs.write(save, this.getTitle(), 'a');
});
casper.run();
- Si le dossier nwaomachux qui n'existe pas encore, il sera automatiquement créé pour vous.
- si vous avez sauvegardé le fichier comme enregistrer.js, l'exécuter à partir de PhantomJS avec le commande suivante sur un PC Linux
./fantôme casperjs/bin/bootstrap.js -- casper-path=casperjs -- cli enregistrer.js
10
répondu
iChux
2014-11-10 07:39:20
Voici une fonction d'assistance que vous pouvez utiliser pour ajouter cette fonctionnalité à l'casper objet.
/**
* Save page markup to a file. Respect an existing savePageContent function, if
* casper.js core introduces one.
*
* @param String targetFile
* A target filename.
* @return Casper
*/
casper.savePageContent = casper.savePageContent || function(targetFile) {
var fs = require('fs');
var f = require('utils').format;
// Get the absolute path.
targetFile = fs.absolute(targetFile);
// Let other code modify the path.
targetFile = this.filter('page.target_filename', targetFile) || targetFile;
this.log(f("Saving page html to %s", targetFile), "debug");
// Try saving the file.
try {
fs.write(targetFile, this.getPageContent(), 'w');
} catch(err) {
this.log(f("Failed to save page html to %s; please check permissions", targetFile), "error");
this.log(err, "debug");
return this;
}
this.log(f("Page html saved to %s", targetFile), "info");
// Trigger the page.saved event.
this.emit('page.saved', targetFile);
return this;
};
il est utile de noter que 'fs' dans ce cas n'est pas L'objet du système de fichiers Node JS, mais plutôt un module PhantomJS.
6
répondu
q0rban
2014-08-26 07:05:36
plein 'then
' fonction, qui supprime des données d'un site, renvoie un json
et de les stocker dans un fichier"monfichier" devrait ressembler à ceci:
casper.then(function paso2() {
var jsonStr = this.evaluate(function(){
var puntos = {};
puntos.alafecha = document.querySelector('div.cont_item_productos_puntos > p.txt_negro').textContent;
puntos.totales = document.querySelector('ul.lista_prod_puntos > li.ppuntos_1 > span.ppuntos_2').textContent;
return JSON.stringify(puntos);
});
console.log("this is a response in json format: "+json);
fs.write('myFile.json', jsonStr, 'w');
});
5
répondu
Alejandro Silva
2013-12-28 14:35:23