まず、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
。(後者は、csv には不要な html タグでコンテンツをラップします)。
- を追加
phantom.exit()
して、最後に座らないようにします。
でファイルを正常に取得できるのに、ステータスが「失敗」である理由がわかりませんwget
。次のトラブルシューティング手順は、 を呼び出す前に次の 2 行を追加すること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));
};
Content-Length ヘッダーが 6,335,428 であるにもかかわらず、3878 バイトですぐに返されます。これは、チャンク エンコーディングまたは非常に大きなファイルのいずれかによる PhantomJS のバグ/制限である可能性があります。
更新: 短期的な解決策のもう 1 つのアイデアは、新しい spawn または execFile コマンドを使用して、PhantomJS スクリプト内から wget または curl を呼び出すことです: http://code.google.com/p/phantomjs/source/browse/ examples/child_process-examples.js