gpt4 book ai didi

java - 从 Finance.yahoo.com 以 csv 格式检索 BSE/NSE 上市股票价格时获取 "N/A"

转载 作者:行者123 更新时间:2023-12-01 13:51:52 24 4
gpt4 key购买 nike

我试图从雅虎财经获取印度 NSE 和 BSE 股票价格数据。我浏览了 stackoverflow 中的一些链接,它提供了获取 csv 格式的数据。似乎仅适用于非印度股市价格。我需要通过雅虎财经获得 BSE(孟买证券交易所)和 NSE(国家证券交易所)。

这是示例 link

http://download.finance.yahoo.com/d/quotes.csv?s=BOBSL.BO,JAIPAN.BO,SANGHIIN.BO&f=snl1d1t1ohgdrx

当我尝试获取值时,它在表的所有值中给出“N/A”。

如何获得股票价格的真实值(value)?我需要在Java程序中进一步实现它。任何帮助表示赞赏。!!

这是我的 Java 代码。

package httpDownloader;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import stock.StockInTime;

public class HistoryHttpDownloader extends HttpDownloader {
public static ArrayList<StockInTime> getHistoricalQuotes(String symbol,
Date from, Date to) {
String data = downloadFile(getHistoryURI(symbol, from, to));
ArrayList<StockInTime> stockHistory = parseHistoryData(data);
return stockHistory;
}

private static String getHistoryURI(String symbol, Date from, Date to) {
Calendar fromDate = new GregorianCalendar();
fromDate.setTime(from);
Calendar toDate = new GregorianCalendar();
toDate.setTime(to);
String uri = "http://ichart.finance.yahoo.com/table.csv?s=";
uri += symbol;
uri += "&a=" + fromDate.get(Calendar.MONTH);
uri += "&b=" + fromDate.get(Calendar.DAY_OF_MONTH);
uri += "&c=" + fromDate.get(Calendar.YEAR);
uri += "&d=" + toDate.get(Calendar.MONTH);
uri += "&e=" + toDate.get(Calendar.DAY_OF_MONTH);
uri += "&f=" + toDate.get(Calendar.YEAR);
return uri += "&g=d";
}

public static ArrayList<StockInTime> parseHistoryData(String data) {
ArrayList<StockInTime> stockHistory = new ArrayList<StockInTime>();
String[] csvRows = data.split("\n");
// First row contains headers, ignored
for (int i = 1; i < csvRows.length; i++) {
String[] stockInfo = csvRows[i].split(",");
StockInTime stockPoint = new StockInTime(
convertToDate(stockInfo[0]), parseDouble(stockInfo[4]));
stockHistory.add(stockPoint);
}
return stockHistory;
}

private static Date convertToDate(String sDate) {
try {
DateFormat dateformater = new SimpleDateFormat("yyyy-MM-dd");
return dateformater.parse(sDate);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
}

最佳答案

问题是您没有从 Yahoo 获取 CSV 中的 BSE 或 NSE 数据,这就是您遇到问题的原因。如果我将您的 URL 更改为垃圾符号,我会得到同样的“N/A”响应:http://download.finance.yahoo.com/d/quotes.csv?s=I_AM_A_FAKE_SYMBOL&f=snl1d1t1ohgdrx "。如果您使用有效的符号(例如 MSFT)进行查询,那么您会得到良好的 CSV 响应。

您需要弄清楚如何获得良好的数据。为了获得优质数据,您通常需要付费。您可以看到雅虎最近停止支持此数据:http://in.answers.yahoo.com/question/index?qid=20130711195331AAoMOCm

关于java - 从 Finance.yahoo.com 以 csv 格式检索 BSE/NSE 上市股票价格时获取 "N/A",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19901104/

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