2013-12-15 89 views
3

我试图使用casperjscasperjs问题下载csv文件

var casper = require('casper').create({}); 
casper.start('http://69.50.252.196/'); 
casper.then(function(){ 
    this.download('http://69.50.252.196/download.csv', 'downloaded.csv'); 
}); 
casper.run(function() { 
    this.exit(); 
}); 

download.csv

إختبار Arabic 
آزمایشی Persian 
测试 Chinese 
測試 Chinese 
испытание Russian 
परीक्षा Hindi 
δοκιμή Greek, Modern (1453-) 
테스트 Korean 
טעסט Yiddish 
テスト Japanese 
பரிட்சை Tamil 

但始终损坏下载的文件下载以下CSV文件和被损坏的字符

已下载csv

"%.*('1 Arabic" 
"2E'ج4ج Persian 
Kص Chinese 
,f Chinese 
8A?KB0=85 Russian 
*[email protected]> Hindi 
´؟؛¹¼® Greek" Modern (1453-)" 
"L¤¸ Korean" 
"طâلط Yiddish"  
"ئ¹ب Japanese" 
"ھ°؟ںحڑب Tamil" 

请帮助,我不能使用child_process或wget或curl 文件必须使用casperjs

回答

3

经过研究发现casperjs模块解决方案! 由于除了处理二进制数据

解决方法,直到锁定数据base64encode问题: 我删除了编码功能和修改打开的文件标志WB为w

OLD casper.js

fs.write(targetPath, cu.decode(this.base64encode(url, method, data)), 'wb'); 

新casper.js

fs.write(targetPath, this.base64encode(url, method, data), 'w'); 

OLD clientutils.js

return this.encode(this.getBinary(url, method, data)); 

新clientutils.js

return this.getBinary(url, method, data); 

问候

1

这似乎是一个错误PhantomJS下载。 (我刚刚从1.9.0升级到1.9.2,以确保:我希望this bug report可能意味着它固定在1.9.1中。)

但是它可以与SlimerJS一起使用。当我运行:

casperjs --engine=slimerjs test.js 

我得到一个356字节的文件,正是因为我做了wget(它显示为UTF-8,正确)。用PhantomJS作为CasperJS引擎,我得到一个177字节的文件,它不显示任何有用的信息。