Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么phantomjs代码没有';不能通过数组吗?_Javascript_Url_Phantomjs_Ubuntu 14.04 - Fatal编程技术网

Javascript 为什么phantomjs代码没有';不能通过数组吗?

Javascript 为什么phantomjs代码没有';不能通过数组吗?,javascript,url,phantomjs,ubuntu-14.04,Javascript,Url,Phantomjs,Ubuntu 14.04,运行此代码后,他用第一页的源代码(“”)保存了无限多的文件,为什么他不浏览其他链接,也不停止 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(){

运行此代码后,他用第一页的源代码(“”)保存了无限多的文件,为什么他不浏览其他链接,也不停止

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);
});

剩下的代码看起来不错。

此处显示的代码无法生成任何文件,因为
fs.write()
位于
page.evaluate()
内,这将不起作用。请显示您的实际代码。实际上,此代码无法生成任何文件的原因是数组正在移位,因此下一项始终位于
[0]
Artjom B:此代码生成相同的结果,无论有无页面。evaluate()Tim:当它移位第一项时,该项将被删除并返回,在下一次迭代中,将从array@Tim是的,这可能是预期的行为。这有什么问题?啊,是的,对不起。我假设args是通过
[I]
访问的,但显然我看起来不太合适。我上面提到过,我试过了。它还会生成无限多的文件,每个文件的名称都是1..(infinite).html,其中包含我看到的第一个URL的源代码。请注册到、、事件。可能有错误。我试过你的代码,对我来说也很有效,我不明白你用的是什么PhantomJS版本,你在上面的事件处理程序中发现了任何错误吗?版本1.9.8,我从你的链接开始了代码(如果你是这么说的),它没有显示任何内容