为什么 phantomjs 代码不通过数组?
why phantomjs code doesn't go through array?
在运行这个代码之后他用第一页的源代码保存了无限多的文件(“http://site1.com”),为什么他不通过其他链接并且不'停不下来?
var args = ["http://site1.com", "http://site2.com", "http://site3.com"];
var fs = require('fs');
var i = 0;
function handle_page(file){
page.open(file,function(){
page.evaluate(function(){
fs.write(i + '.html', page.content, 'w');
});
setTimeout(next_page,100);
});
}
function next_page(){
var file = args.shift();
if(!file){ phantom.exit(0); }
i++
handle_page(file);
}
next_page();
page.evaluate()
是 PhantomJS 中的沙盒页面上下文。它无权访问外部定义的任何变量。因此,您不能在其中引用 fs
或 page
,也不需要,因为 page.content
在外部上下文中可用:
page.open(file,function(){
fs.write(i + '.html', page.content, 'w');
setTimeout(next_page,100);
});
剩下的代码看起来不错。
在运行这个代码之后他用第一页的源代码保存了无限多的文件(“http://site1.com”),为什么他不通过其他链接并且不'停不下来?
var args = ["http://site1.com", "http://site2.com", "http://site3.com"];
var fs = require('fs');
var i = 0;
function handle_page(file){
page.open(file,function(){
page.evaluate(function(){
fs.write(i + '.html', page.content, 'w');
});
setTimeout(next_page,100);
});
}
function next_page(){
var file = args.shift();
if(!file){ phantom.exit(0); }
i++
handle_page(file);
}
next_page();
page.evaluate()
是 PhantomJS 中的沙盒页面上下文。它无权访问外部定义的任何变量。因此,您不能在其中引用 fs
或 page
,也不需要,因为 page.content
在外部上下文中可用:
page.open(file,function(){
fs.write(i + '.html', page.content, 'w');
setTimeout(next_page,100);
});
剩下的代码看起来不错。