CasperJS中是否存在任何onResourceTimeout等效项?

时间:2015-03-17 06:29:24

标签: javascript web-scraping timeout phantomjs casperjs

我想在打开页面需要很长时间后中止运行casper。在PhantomJS中,您可以设置名为resourceTimeout的页面设置。此属性定义超时,在此超时之后,任何请求的资源将停止尝试并继续执行页面的其他部分。 在我查看CasperJS文档时,CasperJS不支持页面的这个属性。我知道我们可以使用stepTimeout选项来控制每个步骤所花费的时间,但我不想设置全局值来影响所有步骤。我想限制代码的页面打开步骤。 CasperJS中有没有相同的设置来做到这一点?或任何其他建议,以停止需要很长时间加载的页面?

谢谢,

1 个答案:

答案 0 :(得分:1)

CasperJS构建于PhantomJS之上,因此您只需使用基础page实例通过访问casper.page来注册此事件。

在调用page之前,不会创建casper.start()实例,因此您需要在page.created事件中创建页面后立即注册该事件:

casper.on("page.created", function(){
    this.page.onResourceTimeout = function(request){
        // do whatever you need to do
    };
});

casper.start(url, then).run();

您不太可能需要它(多个不同的事件处理程序),但您也可以使用CasperJS'事件系统:

casper.on("page.created", function(){
    casper.page.onResourceTimeout = function(request){
        casper.emit("resource.timeout", request);
    };
});

casper.on("resource.timeout", function(request){
    // do whatever you need to do
});

casper.start(url, then).run();