有没有什么办法可以用casperjs下载CSV文件而不指定下载URL?我正在尝试下载CSV文件,该文件的URL是在单击下载按钮时动态生成的。所以,我可能无法在这种情况下使用download()。casperjs下载文件时不指定url
回答
这将是不可能的,直到这个phantomjs问题就解决了http://code.google.com/p/phantomjs/issues/detail?id=52
根据记录,它使用“resource.received”事件是已经成为可能。 如果您收到这样的标题:
Content-Disposition:Attachment;文件名=“ExportData.csv”
产生可以用下面的事件监听器下载文件:
casper.on('resource.received', function(resource) {
if (resource.stage !== "end") {
console.log("resource.stage !== 'end'");
return;
}
if (resource.url.indexOf('ExportData.csv') > -1) {
console.log("Downloading csv file");
this.download(resource.url, 'ExportData.csv');
}
});
你用什么版本? –
@DiegoBorges我不记得是哪个版本。但是我发现CASPER-1.1.0-DEV有这个功能:http://docs.casperjs.org/en/latest/events-filters.html –
我已经找到了一个解决方案。它不是很干净,但它的工作原理:
您需要构建一个全局数组,它将每个resource.received关联一个文件名。
fileInfos[url]= parse_filename_from_responseHeader(resource)
如果url是您想要下载的资源,请先尝试打开(url)。这将触发resiyrce.received事件,解析头并更新全局数组。
现在,在启动casper.download(url)
之前,请查找fileInfos[url]
。
您会在fileInfos数组中找到与url对应的文件名。 如果需要,我可以详细说明解决方案,但是由于问题已经过了几年,所以我会等待下一步的阐述。
我会做的就是这样的事情,但我知道我要去的文件名获得:
this.waitForResource(function check(resource){
res = resource;
// regular expression to test
return /thefilename/.test(resource.url);
}, function(){
this.echo("Resource found: " + res.url);
// download the file
this.download(res.url, path);
}, null, 10000);
- 1. CasperJS下载复制文件夹路径,而不是下载指定的文件
- 2. casperjs下载csv文件
- 3. 从POST附件下载CasperJS的文件
- 4. CasperJS - 下载生成的文件没有URL
- 5. casperjs问题下载csv文件
- 6. 下载一个文件跨网域CasperJS
- 7. 根据casperjs中的mimetype下载文件
- 8. CasperJS重定向URL
- 9. 在循环中更改url时下载文件(指针请求)
- 10. 从特定URL下载文件太慢
- 11. 从给定的URL下载文件
- 12. 从URL下载文件时引发FileNotFoundException
- 13. 下载指定流中的文件?
- 14. 在指定的URL下载内容
- 15. java URL文件下载
- 16. Maven:从url下载文件
- 17. 从URL下载Python文件
- 18. 从url下载pdf文件
- 19. bash下载文件ftp url
- 20. 从url下载文件ColdFusion
- 21. 从url下载mp3文件
- 22. PAD文件下载URL
- 23. 下载使用DownLoadManager.Request从URL下载文件时失败
- 24. 下载大小不指定
- 25. CasperJS选择与指定的文本
- 26. 从Casperjs中弹出下载
- 27. iOS - 渐进式下载指示器下载文件时
- 28. 下载/指数* PHP文件
- 29. 文件下载(不下载?)
- 30. 从URL URL的PHP curl下载文件
我知道你没有时间,你正在寻找一个团队继续在项目(兼容性PhantomJS的v2.0)。你有任何关于截止日期的想法? –