如何使用for()为CasperJS创建一个网站抓取队列?

时间:2017-06-29 18:03:57

标签: javascript phantomjs casperjs

我想知道为什么我无法使用这个CasperJS代码。我的主要目标是保存一些页面,页面html包含两个放入url的动态值。问题是CasperJS似乎在for()代码完成后运行它的代码并且只保存了最后一页。我怎样才能使这个工作?



var site_list = new Array('stoarge1','storage2','storage3');
var input_list = new Array('','y1','y2','y3');


var random_url = 'https://page.com';

var casper = require('casper').create();

casper.start(random_url, function() {
});


//
var time = 3000;

for (var i=0; i<site_list.length; i++) {
	for (var j=0; j<input_list.length; j++) {

		var site = site_list[i];
		var input = input_list[j];

		var url = 'https://page.com/' + site + '?=p'+ input;
		var save = '/mydrive/' + site + '_' + input +'.html';

		casper.thenOpen(url, function() {
			this.echo(this.getCurrentUrl());

			var fs = require('fs');
			var html = this.getPageContent();
			var f = fs.open(save, 'w');
			f.write(html);
			f.close();

			this.echo(site + ' - ' + input + ' (' + j + '/' + input_list.length +')');

		});


	}
}

casper.run(function () {
	this.echo('Done').exit();
});
&#13;
&#13;
&#13;

0 个答案:

没有答案