![](/img/trans.png)
[英]How to retrieve BSE/NSE listed stock's price from finance.yahoo.com
[英]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.