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

时间:2013-08-01 05:20:24

标签: javascript html

我正在研究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);
        }
      }
    }

谢谢

2 个答案:

答案 0 :(得分:2)

为了解决Same Origin Policy所设置的跨域请求限制,您需要一个允许您执行JSONP请求或已启用CORS的端点。不幸的是,雅虎!财务终端没有。

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

通常,我的建议是使用YQL,这样您就可以快速轻松地构建位于您和财务网站之间的服务器。事实上,他们已经拥有了雅虎!完全针对您尝试获取的数据的财务终端:link

然而,由于这可能不可靠,我还有一个网站刮板,我已经在各种项目中使用过。它托管在Heroku上,允许您从任何站点获取几乎任何内容。我不建议将它用于大批量项目,但对于occaisional数据提取它是很好的。在你的情况下,你会这样使用它:

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许可下发布的。

答案 1 :(得分:1)

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

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