【发布时间】:2017-04-20 12:39:50
【问题描述】:
我有一个 java 软件,它可以从 yahoo Finance 请求当前和历史股票价格。
正如其他帖子中所述,雅虎可以将价格写入文件,扫描仪可以读取该文件。 要索取亚马逊的当前价格,我致电: http://finance.yahoo.com/d/quotes.csv?s=AMZ.DE&f=snl1t1c4
要查询亚马逊过去 5 年的价格,我致电: http://ichart.finance.yahoo.com/table.csv?s=AMZ.DE&d=3&e=20&f=2017&a=3&b=20&c=2012&g=d&ignore=.cvs
如果我在浏览器中访问这两个链接,它会下载一个 .csv 文件,其中包含每个链接的预期数据。
在java中对应的.csv文件应该通过以下方法读取:
private static List<String> requestStockData(String request) throws IOException {
Scanner scanner = null;
List<String> answer = new ArrayList();
try {
scanner = new Scanner(new URL(request).openStream());//no exception here
} catch (FileNotFoundException e) {
Tools.printDebugMessage("Received null-answer for request " + request);
return answer;
}
while (scanner.hasNextLine()) {//scanner.hasNextLine() returns false
String value = scanner.nextLine();
answer.add(value);
Tools.printDebugMessage("received answer from YAHOO! Finance: " + value);
}
scanner.close();
return answer;
}
其中 request 是上述链接之一。
我已经使用这个软件几个星期了,它运行良好。 但是最近几天它不再适用于历史数据,但它适用于当前数据。
使用指向历史数据的链接,扫描仪将正常打开,不会抛出异常,但scanner.hasNextLine()会立即返回false,但用我的浏览器下载的.csv文件有1305行。
你们中有人了解为什么扫描仪不再接受历史数据的 .csv 文件而是接受当前数据的吗?
【问题讨论】:
标签: java yahoo-finance