首先,我就很快指出,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();
});
我做了這些變化:
- 顯示狀態(這是「不及格」 )
- 更改使用
plainText
,而不是content
。 (後者將您的內容封裝在html標籤中,而您不希望這些標籤用於csv)。
- 添加
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
你有沒有弄清楚這個問題的答案? –