簡體   English   中英

從csv格式的Finance.yahoo.com中檢索BSE / NSE上市股票的價格時獲得“ N / A”

[英]Getting “N/A” when retrieve BSE/NSE listed stock's price from finance.yahoo.com in csv format

我曾嘗試從Yahoo Finance獲取印度NSE和BSE股票價格數據。 我通過了stackoverflow中的一些鏈接,它提供了以csv格式獲取數據的功能。 似乎僅適用於非印度股票市場價格。 我需要通過Yahoo金融獲得BSE(孟買證券交易所)和NSE(國家證券交易所)。

這是示例鏈接

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

當我嘗試獲取價值時,它在表格的所有價值中都給出了“ 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;
    }
}

問題是您沒有從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響應。

您需要弄清楚如何獲取良好的數據。 對於好的數據,通常需要付費。 您可以看到Yahoo最近停止支持此數據: http : //in.answers.yahoo.com/question/index?qid=20130711195331AAoMOCm

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM