使用js直接从html中的url读取csv

Read csv directly from url in html using js

本文关键字:中的 url 读取 csv html js 使用      更新时间:2023-09-26

我正在开发html&js中,我以表格格式显示雅虎金融股票。数据以csv格式获取。我想让js直接从url 读取数据

url为http://ichart.finance.yahoo.com/table.csv?s=RIL.BO

我尝试从stackoverflow获得的代码在localhosturl中工作。

 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);
        }
      }
    }

感谢

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

所以,正如詹姆斯提到的,你是一个中间人

通常,我对此的建议是使用YQL,它允许您快速轻松地构建一个位于您和金融网站之间的服务器。事实上,他们已经有了雅虎!金融端点,确切地说,你正试图获得的数据:链接

然而,由于这可能不可靠,我也有一个网站刮刀,我在各种项目中都使用过。它托管在Heroku上,允许您从任何网站获取几乎任何内容。我不建议在大容量项目中使用它,但对于偶尔的数据获取,它非常棒。在你的情况下,你会这样使用它:

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

编辑:ichart.finance.yahoo.com已被弃用,因此此操作失败。将其保存在此处以供参考

既然你已经解决了这个问题,我建议你使用jQuery和csv到数组插件:

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

此外,如果你想推出自己的中间人,你可以使用我创建的网站scraper。源代码在GitHub上,它是在MIT许可证下发布的。

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

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