javascript - CasperJS 中是否有任何 onResourceTimeout 等效项?

标签 javascript web-scraping timeout phantomjs casperjs

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

谢谢,

最佳答案

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

关于javascript - CasperJS 中是否有任何 onResourceTimeout 等效项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29092652/

相关文章:

javascript - 我们如何用一组单词填充一组 <span> </span> ?

angularjs - 使用 AngularJS 超时

c# - NUnit 可以期待超时吗?

python - 如何在Python中获取下载按钮的url并读取CSV文件?

iphone - NSData datawithcontentsofurl有没有超时时间?

javascript - 我的 PHP URL 不会重定向

javascript - 同时获取2个ajax数据

javascript - 我如何使用带有 Javascript 的单选按钮来读取输入然后打印到 HTML <pre>?

web-scraping - 如何限制BeautifulSoup找到的元素数量?

xml - 使用 XML/RCurl R 包解析 HTML 表,而不使用 readHTMLTable 函数