CasperJS - 如何从一系列链接并行打开所有链接

时间:2015-02-06 04:16:00

标签: phantomjs casperjs

我需要并行打开数组的所有链接 如何制作?
在我的代码中,所有链接将逐个打开,而不是并行打开 这是我的代码:

casper.then(function(){
     links = this.evaluate(function(){
        var links = document.getElementsByTagName('a');
        links = Array.prototype.map.call(links,function(link){
        return link.getAttribute('href');
        });
        return links;
    });
});
casper.then(function(){
    this.each(links,function(self,link){
     self.thenOpen(link,function(a){
     this.echo(this.getCurrentUrl());
     });
    });
});
casper.run(function(){this.exit()});

1 个答案:

答案 0 :(得分:1)

casper对象代表一个浏览器窗口。

一种方法是创建多个casper个对象,每个URL要并行获取一个。请注意this is not officially supported,因此可能很脆弱。

另一种方法是使用bash脚本启动casperjs的多个实例,并为每个实例提供一组要获取的URL。这很干净(如果使用持久性cookie,您可能希望确保它们各自都有自己的cookie文件:--cookies-file=/path/to/cookies.txt),但您可能更难编写脚本,具体取决于您获取初始列表的方式网址。