Javascript 使用CasperJS将结果写入文件
如何在文件系统中创建文件并将Javascript 使用CasperJS将结果写入文件,javascript,casperjs,Javascript,Casperjs,如何在文件系统中创建文件并将this.getPageContent()的内容放在其中 var fs = require('fs'); fs.write(myfile, myData, 'w'); 为了节省日常开支,我会: var currentTime = new Date(); var month = currentTime.getMonth() + 1; var day = currentTime.getDate(); var year = currentTime.getFullYear(
this.getPageContent()
的内容放在其中
var fs = require('fs');
fs.write(myfile, myData, 'w');
为了节省日常开支,我会:
var currentTime = new Date();
var month = currentTime.getMonth() + 1;
var day = currentTime.getDate();
var year = currentTime.getFullYear();
var myfile = "data-"+year + "-" + month + "-" + day+".html";
完整的“
then
”函数从站点中删除数据,返回一个json
,并将其存储到一个文件“myFile”中,该函数如下所示:
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');
});
您还可以使用下面的方法附加到文本文件
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();
- 如果文件夹nwaomachux还不存在,它将自动被删除 为你创造的
- 如果将文件保存为save.js,请使用 在Linux PC上执行以下命令
下面是一个帮助器函数,可用于将此功能添加到casper对象
/**
* 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;
};
请注意,本例中的“fs”不是Node JS FileSystem对象,而是一个。?既然什么时候可以在casperjs中使用节点模块?@abbood
fs
是一个,而不是一个NodeJS模块。只是想说明一下,我通过创建一个空白模块文件和模块将节点模块导入到Casper脚本中。导出对节点脚本的require调用。我可以将这些代理模块导入到casper脚本中,并使用节点模块而不会出现任何问题。即使是在caspers测试环境中,这个问题的标题也需要改写。您正在将页面HTML转储到一个文件中,而不是写入结果。您还可以将console.log(this.getPageContent())代码>并将输出重定向到文件。但是,如果您这样做,则只需将页面内容记录在console.log中,否则您将在文件中获得登录到standard的所有消息以及内容。