2013-05-27 16 views
3

如何訪問簡單的CSV數據?下載CSV(或其他非HTML數據)phantomjs

var webpage = require('webpage'); 
    var csvPage = webpage.create(); 
    var csvUrl= "http://www.scoach.ch/arcmsdownload/023c5c5aa58e6e0ff963ddcdea5ac016/CONTENT.csv/derivatives_2013-05-24.csv"; 

    csvPage.open(csvUrl, function(status){ 
     console.log("csv: " + csvPage.content); 
    }); 

這將給我一個空的html:這不是預期的結果:-)我已經嘗試了幾次回調,但沒有任何幫助。

感謝您的幫助!

+1

你有沒有弄清楚這個問題的答案? –

回答

2

首先,我就很快指出,PhantomJS是矯枉過正這項工作。使用wget,curl,PHP file_get_contents等。但是,我假設這是更復雜的PhantomJS腳本的一部分,並且您有一個很好的理由。

我只能半回答你的問題,通過向您展示如何查看丟失的錯誤信息:

var webpage = require('webpage'); 
var csvPage = webpage.create(); 
var csvUrl= "http://www.scoach.ch/arcmsdownload/023c5c5aa58e6e0ff963ddcdea5ac016/CONTENT.csv/derivatives_2013-05-24.csv"; 
csvPage.open(csvUrl, function(status){ 
    console.log("status="+status); 
    console.log("csv: " + csvPage.plainText); 
    phantom.exit(); 
}); 

我做了這些變化:

  1. 顯示狀態(這是「不及格」 )
  2. 更改使用plainText,而不是content。 (後者將您的內容封裝在html標籤中,而您不希望這些標籤用於csv)。
  3. 添加phantom.exit(),只是因此它不會在年底坐在那裏。

我不知道爲什麼狀態爲「失敗」的時候,我可以wget獲取文件的罰款。下一個故障排除步驟是調用csvPage.open前兩行加:

csvPage.onResourceRequested = function (request) { 
    console.log('Request ' + JSON.stringify(request, undefined, 4)); 
}; 
csvPage.onResourceReceived = function (response) { 
    console.log('Receive ' + JSON.stringify(response, undefined, 4)); 
}; 

它立即返回,與3878個字節,儘管我看到的一6335428 Content-Length頭。這可能是PhantomJS bug /限制分塊編碼或非常大的文件。

更新:另一個想法,對於一個短期的解決方案,是調用wget或curl從PhantomJS腳本中,使用新的菌種或命令的execfile:http://code.google.com/p/phantomjs/source/browse/examples/child_process-examples.js

+0

謝謝!我已經根據這個問題提出了一個錯誤報告。 – KIC

相關問題