Сбой веб-службы Yahoo Finance исчез? API изменился? Вниз временно?
В течение некоторого времени я использовал следующий REST API для запроса финансирования Yahoo для текущих цен. Он документирован в нескольких сообщениях, например. Yahoo finance webservice и в других местах yahoo-finance.
http://finance.yahoo.com/webservice/v1/symbols/$SYMBOLS/quote?format=json
где $SYMBOLS представляет собой список символов или индексных символов с разделителями-запятыми.
Вчера запрос перестает работать, возвращая только сообщение "Перемещено временно. Переадресация на...".
Закрыта ли эта веб-служба? Был ли он заменен YQL или другим API? Запросы на таблицу исторических цен на "ичарт" по-прежнему работают. Например.
http://ichart.finance.yahoo.com/table.csv?d=2&e=3&f=2016&g=d&a=0&b=1&c=2011&ignore=.csv&s=$SYMBOL
Спасибо.
Ответы
Ответ 1
Я столкнулся с аналогичной проблемой за последние 2-3 дня. URL работает на смартфоне, где на рабочем столе он дает ошибку "Недействительный параметр" и HTTP-код 406.
Это можно решить, добавив агент пользователя как "Mozilla/5.0 (Linux, Android 6.0.1, MotoG3 Build/MPI24.107-55) AppleWebKit/537.36 (KHTML, например, Gecko) Chrome/51.0.2704.81 Mobile Safari/537.36" при вызове запроса на получение.
Например, если вы загружаете из curl в php, используйте следующее:
curl_setopt($session,CURLOPT_USERAGENT,"Mozilla/5.0 (Linux; Android 6.0.1; MotoG3 Build/MPI24.107-55) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.81 Mobile Safari/537.36");
Я надеюсь, что это решит проблему.
Ответ 2
Поскольку служба недоступна, я использую следующий URL для запроса данных Yahoo (для ACA.PA):
Ссылка
Результат JSON отличается, но я нашел интересующую меня информацию.
Для получения дополнительной информации посетите страницу https://developer.yahoo.com/yql/
Ответ 3
У меня была такая же проблема. Вот URL-адрес API, чтобы вытащить запас из YAHOO. Надеюсь, это поможет.
https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22YHOO%22)&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=
Ответ 4
Да, это похоже на Yahoo! прекратил (частный, в основном недокументированный) Yahoo Finance API, на который многие многие годы полагались на валютные данные. За последние 24 часа мы получили некоторые уведомления об этом. (edit: Кажется, что все ответы возвращаются "Not a valid parameter"
. Я полагаю, есть шанс, что они могут снова включить его, но они официально не поддерживают этот API нигде, насколько я могу судить.)
Я создал Open Exchange Rates около пяти лет назад, и наш API обменного курса теперь поддерживает сообщество десятков тысяч разработчиков - и их десятки миллионов пользователей - с точной и актуальной информацией.
Пожалуйста, ознакомьтесь с нашим сервисом Forever Free по адресу https://openexchangerates.org.
Наш API находится в простом, оригинальном формате JSON, который фактически стал стандартным методом отображения ставок, потому что он настолько прост в работе (в отличие от API Yahoo, который требовал от вас разобрать скрытые вложенные объекты вам нужна основная информация...)
Если вам нужна помощь в переносе с устаревшего Yahoo! API, мы будем рады помочь по электронной почте.
(Я являюсь основателем Open Exchange Rates.)
Ответ 5
Я являюсь автором ValueViz на github.
Суточные цены
Вы должны быть знакомы с RESTFUL-сервисами.
https://quantprice.herokuapp.com/api/v1.1/scoop/day?tickers=MSFT&date=2017-06-09
Исторические цены
Вы должны указать диапазон дат:
https://quantprice.herokuapp.com/api/v1.1/scoop/period?tickers=MSFT&begin=2012-02-19&end=2012-02-20
Если вы не укажете начало или конец, оно будет использовать самую раннюю или текущую дату:
https://quantprice.herokuapp.com/api/v1.1/scoop/period?tickers=MSFT&begin=2012-02-19
Несколько тикеров
Вы можете просто запятые отдельные тикеры:
https://quantprice.herokuapp.com/api/v1.1/scoop/period?tickers=IBM,MSFT&begin=2012-02-19
Ограничение скорости
Все запросы ограничены до 10 запросов в час. Если вы хотите зарегистрироваться для API полного доступа, отправьте мне DM на твиттер. Вы получите ключ API для добавления в URL.
Мы создаем PayPal-аккаунт для платной подписки без ставок.
Список доступных тикеров
https://github.com/robomotic/valueviz/blob/master/scoop_tickers.csv
Я также работаю над предоставлением фундаментальных данных и данных компании из EDGAR. Приветствия.
Ответ 6
Он перенаправляется на ту же страницу, но добавляет параметр "bypass = true", который дает ошибку.
EDIT:
Ответ, полученный https://stackoverflow.com/users/6593038/hemant-prasad, работает на меня.
При изменении пользовательского агента на мобильное устройство API работает отлично и до сих пор не перенаправляется.
Это код, который я использую в Java (он для версии XML, но его можно использовать и для JSON):
URL url = new URL ("https://finance.yahoo.com/webservice/v1/symbols/" + stocks + "/quote");
HttpURLConnection urlc = (HttpURLConnection) url.openConnection ();
urlc.setRequestProperty ("User-Agent", "Mozilla/5.0 (Linux; Android 6.0; MotoE2(4G-LTE) Build/MPI24.65-39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.81 Mobile Safari/537.36");
Document xml = DocumentBuilderFactory.newInstance ().newDocumentBuilder ().parse (urlc.getInputStream ());
Ответ 7
Я нашел способ использования API csv.
ссылка
где вам нужно написать символ, параметры и столбцы.
Используйте этот сайт, чтобы найти необходимые параметры: http://www.jarloo.com/yahoo_finance/
Пример:
Если вам нужно знать объем символа
замените строку sl1d1t1c1ohgv
на v
и замените столбцы symbol%2Cprice%2Cdate%2Ctime%2Cchange%2Ccol1%2Chigh%2Clow%2Cvolume
на volume
Единственная проблема заключается в том, что данные являются случайными, а не реальными, например, в веб-сервисе API
Ответ 8
Ознакомьтесь с превосходным API-интерфейсом API, доступным на NuGet: https://github.com/salmonthinlion/YahooFinanceApi
Получить котировки акций
var quotes = await Yahoo.Symbol("AAPL", "GOOG").Tag(Tag.LastTradePriceOnly, Tag,ChangeAndPercentChange, Tag.DaysLow, Tag.DaysHigh).GetAsync();
var aapl = quotes["AAPL"];
var price = aapl[Tag.LastTradePriceOnly];
Получить исторические данные для запаса
// You should be able to query data from various markets including US, HK, TW
var history = await Yahoo.GetHistoricalAsync("AAPL", new DateTime(2016, 1, 1), new DateTime(2016, 7, 1), Period.Daily);
foreach (var candle in history)
{
Console.WriteLine($"DateTime: {candle.DateTime}, Open: {candle.Open}, High: {candle.High}, Low: {candle.Low}, Close: {candle.Close}, Volume: {candle.Volume}, AdjustedClose: {candle.AdjustedClose}");
}
Получить историю дивидендов для акций
// You should be able to query data from various markets including US, HK, TW
var dividendHistory = await Yahoo.GetHistoricalDividendsAsync("AAPL", new DateTime(2016, 1, 1), new DateTime(2016, 7, 1));
foreach (var candle in dividendHistory)
{
Console.WriteLine($"DateTime: {candle.DateTime}, Dividend: {candle.Dividend}");
}
Ответ 9
Python Yahoo Finance API, похоже, тоже проблема. Если вы используете его для поиска, например, цены акций Amazon, он снова показывает те же два значения снова и снова.
from yahoo_finance import Share import time f = open('/tmp/amazon/amzn.csv', 'w') while True:
amzn=Share("AMZN")
s = amzn.get_price() + "," + amzn.get_trade_datetime() + '\n'
print (s)
f.write (s)
f.flush()
time.sleep(5)
del amzn