【问题标题】:Read csv directly from url in html using js使用js直接从html中的url读取csv
【发布时间】:2018-11-02 00:03:14
【问题描述】:

我正在研究 html 和 js,我在其中以表格格式显示雅虎金融股票。数据以 csv 格式获取。我要js直接从url读取数据

网址是http://ichart.finance.yahoo.com/table.csv?s=RIL.BO

我尝试从 stackoverflow 获得的代码在 localhost url 中运行。

 var txtFile = new XMLHttpRequest();
    txtFile.open("GET", "http://ichart.finance.yahoo.com/table.csv?s=RIL.BO", true);
    txtFile.onreadystatechange = function() {
      if (txtFile.readyState === 4) {  // Makes sure the document is ready to parse.
        if (txtFile.status === 200) {  // Makes sure it's found the file.
          allText = txtFile.responseText;
          lines = txtFile.responseText.split("\n"); // Will separate each line into an array
          alert(allText);
        }
      }
    }

谢谢

【问题讨论】:

  • 某些浏览器不允许跨域ajax调用。使用jsonp 代替它
  • Gurjinder:你能赞成或接受任何有帮助的答案吗?

标签: javascript html


【解决方案1】:

为了绕过Same Origin Policy 设置的跨域请求限制,您需要一个端点来允许您执行 JSONP 请求或启用 CORS。不幸的是,雅虎!财务端点两者都没有。

所以,正如詹姆斯所说,你需要一个中间人。

通常,我对此的建议是使用YQL,它允许您快速轻松地构建一个位于您和金融站点之间的服务器。事实上,他们已经有了 Yahoo!准确获取您想要获取的数据的财务端点:link

但是,由于这可能不可靠,我也有一个网站抓取工具,我在各种项目中都使用过。它托管在 Heroku 上,允许您从任何站点获取几乎任何内容。我不建议将它用于大容量项目,但对于偶尔获取数据来说它很棒。在您的情况下,您可以这样使用它:

http://websitescraper.herokuapp.com/?url=http://ichart.finance.yahoo.com/table.csv?s=RIL.BO&callback=jsCallback

编辑:ichart.finance.yahoo.com 已被弃用,因此失败。留在这里供参考

既然你已经解决了这个问题,我建议使用 jQuery 和 csv-to-array plugin:

jQuery.getJSON('http://websitescraper.herokuapp.com/?url=http://ichart.finance.yahoo.com/table.csv?s=RIL.BO&callback=?', function (csvdata) {
  console.log(csvdata.csvToArray());
});

另外,如果您想启动自己的中间人,可以使用我构建的网站抓取工具。 source code is on GitHub 是在 MIT 许可下发布的。

【讨论】:

  • 查看了代码;不错的简单刮刀,很适合 Gurjinder 开始使用。
  • 您的网站爬虫证书已过期 :(
  • @ErwinRooijakkers 谢谢欧文。看起来 heroku 已经放弃了对在 heroku.com 上托管的应用程序的支持。我已将链接更新为 websitecraper.herokuapp.com
【解决方案2】:

您正在尝试执行跨域请求,因此它被阻止。

您需要编写一个服务器端脚本来为您获取数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-06
    • 2018-05-06
    • 2011-08-24
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    • 2019-04-17
    • 1970-01-01
    相关资源
    最近更新 更多