使用CasperJS将结果写入文件
如何在文件系统中创build一个文件,并将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";
您也可以使用下面的方法追加到文本文件
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尚不存在,它将自动为您创build。
- 如果将文件保存为save.js ,请在Linux PC上使用以下命令从PhantomJS运行
./phantom casperjs / bin / bootstrap.js –casper-path = casperjs –cli save.js
这是一个辅助函数,你可以使用它来将这个function添加到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对象,而是一个PhantomJS模块 。
一个完整的“ 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'); });