2013-12-15 90 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字節的文件,它不顯示任何有用的信息。