gpt4 book ai didi

phantomjs - 使用 phantomjs 下载 csv(或其他非 html 数据)

转载 作者:行者123 更新时间:2023-12-02 23:52:15 25 4
gpt4 key购买 nike

如何访问简单的 csv 数据?

    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:这不是预期的结果 :-) 我已经尝试了几次回调,但没有任何帮助。

感谢您的帮助!

最佳答案

首先,我会快速指出 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));
};

即使我看到 Content-Length header 为 6,335,428,它也会立即返回 3878 字节。这可能是分块编码或非常大文件的 PhantomJS 错误/限制。

更新:对于短期解决方案,另一个想法是使用新的spawn或execFile命令从PhantomJS脚本内部调用wget或curl:http://code.google.com/p/phantomjs/source/browse/examples/child_process-examples.js

关于phantomjs - 使用 phantomjs 下载 csv(或其他非 html 数据),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16775813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com