我不熟悉使用CasperJS和JavaScript。目前,我正在尝试学习如何从git repo下载文件。在阅读参考页面时,我偶然发现了CasperJS的下载方法。结果,我尝试了以下内容:
var casper = require('casper').create();
var url = null;
var utils = require('utils');
var http = require('http');
var fs = require('fs');
// A test to make sure that we can go into a github without any authentication
casper.start('https://github.com/gabegomez014/Test2', function(){
this.echo(this.getTitle(), 'INFO');
});
// A test for how the download function works
casper.then(function(){
url = 'https://github.com/gabegomez014/Test2/blob/master/.gitignore';
var cwd = fs.absolute('.');
var parent = fs.absolute("../");
var path = cwd + parent;
this.download(url, path);
});
// A test in order to get the current HTTP status of links that have been put into the function
// Attempt 3 works and cleaner
casper.thenOpen('https://github.com/gabegomez014/Test2/blob/master/.gitignore', function(){
var res = this.status(false);
this.echo(res.currentHTTPStatus);
});
问题在于,它不是仅仅将文件下载到指定路径的计算机,而是复制部分目录路径,该路径与创建的绝对路径相同(也没有内容)。我不知道我做的事情是不是错了(我只能这么做),或者是什么,但有人可以帮助我吗?
P.S。 :以另一种方式下载这些文件会更容易吗?因为如果有必要,它将完成。提前感谢您的时间和帮助。
答案 0 :(得分:0)
好吧,经过长时间休息并回到它之后,我意识到这是一个很容易犯的错误。首先,我将两个绝对路径连接在一起,这就是它将目录复制两次的原因。
在下载文件方面,我了解到我不需要在CasperJS中指定方法的路径,而是将它放在当前的工作目录中。但是在添加隐藏文件时要小心,因为正如您所知,它们已被隐藏。例如,我下载了一个.gitignore,因为它被隐藏了,直到我完成后才能看到它..." ls -a"在我正在做这个工作的目录的终端内。
我还想说,即使我为文件或.txt指定了.java这样的某个扩展名,这个方法也只会下载HTML,所以如果你想在git repo中关联实际文件,你就可以# 39;我必须做一些我目前仍在寻找的事情。这是修复代码:
var casper = require('casper').create();
var url = null;
var utils = require('utils');
var http = require('http');
var fs = require('fs');
casper.options.waitTimeout = 20000;
// A test to make sure that we can go into a github without any authentication
casper.start('https://github.com/gabegomez014/Test2', function(){
this.echo(this.getTitle(), 'INFO');
});
// A test for how the download function works
casper.thenOpen('https://github.com/gabegomez014/SSS', function() {
url = 'https://github.com/gabegomez014/SSS/tree/master/src/SolarSystem/'
this.download(url, 'Algorithms.java');
});
// A test in order to get the current HTTP status of links that have been put into the function
// Attempt 3 works and cleaner
casper.thenOpen('https://github.com/gabegomez014/Test2/blob/master/.gitignore', function(){
var res = this.status(false);
this.echo(res.currentHTTPStatus);
});
// To let me know that all of the functions have finished and all done
casper.then(function(){
console.log('complete');
});
casper.run();