Java 获得;不适用;检索BSE/NSE上市股票时';s以csv格式从finance.yahoo.com获取的价格

Java 获得;不适用;检索BSE/NSE上市股票时';s以csv格式从finance.yahoo.com获取的价格,java,yahoo,stock,yahoo-finance,stockquotes,Java,Yahoo,Stock,Yahoo Finance,Stockquotes,我曾试图从雅虎财经获取印度NSE和BSE股票价格数据。我浏览了stackoverflow中的一些链接,它提供了以csv格式获取数据的功能。这似乎只适用于非印度股市的价格。我需要通过雅虎金融获得BSE(孟买证券交易所)和NSE(国家证券交易所) 这是样品 当我尝试获取值时,它在表的所有值中给出“N/A” 如何获得股票价格的真实价值??我需要在Java程序中进一步实现它。感谢您的帮助 这是我的Java代码 package httpDownloader; import java.text.Date

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

这是样品

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

如何获得股票价格的真实价值??我需要在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;
    }
}
package-httpDownloader;
导入java.text.DateFormat;
导入java.text.ParseException;
导入java.text.simpleDataFormat;
导入java.util.ArrayList;
导入java.util.Calendar;
导入java.util.Date;
导入java.util.GregorianCalendar;
进口库存.库存时间;
公共类HistoryHttpDownloader扩展了HttpDownloader{
公共静态ArrayList getHistoricalQuotes(字符串符号,
日期从,日期到){
字符串数据=下载文件(getHistoryURI(符号,从,到));
ArrayList stockHistory=parseHistoryData(数据);
返回股票历史;
}
私有静态字符串getHistoryURI(字符串符号、日期从、日期到){
日历fromDate=新的GregorianCalendar();
fromDate.setTime(从);
日历toDate=新的GregorianCalendar();
toDate.设置时间(至);
字符串uri=”http://ichart.finance.yahoo.com/table.csv?s=";
uri+=符号;
uri+=“&a=“+fromDate.get(Calendar.MONTH);
uri+=“&b=“+fromDate.get(日历.月日);
uri+=“&c=“+fromDate.get(日历年);
uri+=“&d=“+toDate.get(日历月);
uri+=“&e=“+toDate.get(日历日/月日);
uri+=“&f=“+toDate.get(日历年);
返回uri+=“&g=d”;
}
公共静态ArrayList parseHistoryData(字符串数据){
ArrayList stockHistory=新的ArrayList();
字符串[]csvRows=data.split(“\n”);
//第一行包含标题,已忽略
对于(int i=1;i
问题在于你无法从雅虎的CSV中获取BSE或NSE数据,这就是你遇到问题的原因。如果我将您的URL更改为垃圾符号,则会得到相同类型的“N/a”响应:“。如果您使用有效符号(如MSFT)进行查询,则会得到良好的CSV响应


你需要弄清楚如何获得好的数据。要获得好的数据,你通常需要付费。你可以看到雅虎最近停止支持这一数据:。

我通过你提供的链接,可以通过任何其他方式从雅虎获得数据?不是从雅虎,而是其他提供商。(通常你必须为这些数据付费。)最后一点是,我们并不是免费获得BSE数据的?对-你通常必须为金融数据付费。如果你计划在商业环境中使用这些数据,这一点尤其正确。在某种程度上,你可以得到你付费的数据。在这种情况下,如果提供商(雅虎)要求“免费”,你就没有追索权停止提供它。