Google finance api не работает с 6 / сентября / 2017

Я использовал Google finance api для получения котировок акций и отображения содержимого на моем сайте. Внезапно с 6 / september / 2017 это перестало работать. Url, который я использовал для получения котировок акций, -https://finance.google.com/finance/info?client=ig&q=SYMBOL&callback=?.

ранее я использовал Yahoo finance api, и это было непоследовательно. Итак, я переключился на Google finance api.

не могли бы вы пожалуйста помочь мне это?

спасибо, Рам!--3-->

8 ответов


этот url работает. Я думаю, просто url изменился с www.google.com к finance.google.com

https://finance.google.com/finance/getprices?q=ACC&x=NSE&p=15&i=300&f=d,c,o,h,l,v


в конце концов я начал использовать Yahoo finance. Данные не живут, есть 20 минут задержки. Я думал, что это будет полезно для людей, которые сталкиваются с такими проблемами, как я.

по версии Yahoo API и URL-адреса https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%3D%22MSFT%22&env=store://datatables.org/alltableswithkeys

Это вернет данные запаса в формате xml. Вы можете проанализировать xml, чтобы получить желаемое поля.

спасибо, Рам!--1-->


У нас была такая же проблема, и мы нашли ниже альтернативный API, предоставленный Microsoft Bing API для фондовых рынков. Ниже API возвращает данные в формате JSON.

https://finance.services.appex.bing.com/Market.svc/ChartAndQuotes?symbols=139.1.500209.BOM&chartType=1d&isETF=false&iseod=False&lang=en-IN&isCS=false&isVol=true

Спасибо, Шамал


я умирал, чтобы искать нить, как это вчера, когда я столкнулся с проблемой!

Как сказал Салкетер, Google Finance API был официально "закрыт" в 2012 году. Однако по какой-то причине он все еще работал до 5 сентября 2017 года. Я создал программу для управления своим портфелем, которая использует GF API для получения живых котировок акций США. Он перестал работать 6 сентября 2017 года, поэтому я предполагаю, что инженеры за "тайным предоставлением" API теперь "фактически" остановили службу.

I нашел альтернативу https://www.alphavantage.co/documentation/, и это кажется лучшей альтернативой для бесплатных котировок акций в США. Им просто нужна твоя электронная почта, ничего больше. Это немного медленным, потому что он не имеет мультивалютного запроса, но нищие не выбирают.


мне пришлось переключиться на Google finance после использования Yahoo finance в течение длительного времени после того, как Verizon купил yahoo в мае этого года и закончил бесплатный сервис API. Я вернулся и повторно исследовал эту проблему, и кто-то создал новый вызов API Yahoo finance, который работает с новым API yahoo. https://stackoverflow.com/a/44092983/8316350

источник и установщик python можно найти здесь:https://github.com/c0redumb/yahoo_quote_download

в аргументы (ticker, start_date и end_date), где даты имеют формат yyyymmdd и возвращает список строк Юникода. Следующий тест загрузит данные за пару недель, а затем извлечет только скорректированную цену закрытия, чтобы вернуть список под названием adj_close:

from yahoo_quote_download import yqd
import string
quote = yqd.load_yahoo_quote('AAPL', '20170515', '20170530')
print(quote[0]) # print the column headers
print(quote[1]) # print a couple rows of data
print(quote[2]) # just to make sure it looks right
quote.pop()  # get rid of blank string at end of data
quote = [row.encode("utf-8") for row in quote]  # convert to byte data
quote = [string.split(row, ',') for row in quote] # split the string to create a list of lists
adj_close = [row[5] for row in quote]  # grab only the 'adj close' data and put into a new list
print(adj_close)

возвращает:

Date,Open,High,Low,Close,Adj Close,Volume
2017-05-15,156.009995,156.649994,155.050003,155.699997,155.090958,26009700
2017-05-16,155.940002,156.059998,154.720001,155.470001,154.861862,20048500
['Adj Close', '155.090958', '154.861862', '149.662277', '151.943314', '152.461288', '153.387650', '153.198395', '152.740189', '153.268112', '153.009140', '153.068893']

Я вручную читал со страницы Google Finance для каждого запаса, прежде чем я получил ?info ссылка. Как это не работает, я возвращаюсь на страницу.

вот мой фрагмент python:

def get_market_price(symbol):
    print "Getting market price: " + symbol

    base_url = 'http://finance.google.com/finance?q='

    retries = 2

    while True:
        try:
            response = urllib2.urlopen(base_url + symbol)
            html = response.read()
        except Exception, msg:
            if retries > 0:
                retries -= 1
            else:
                raise Exception("Error getting market price!")

        soup = BeautifulSoup(html, 'lxml')

        try:
            price_change = soup.find("div", { "class": "id-price-change" })
            price_change = price_change.find("span").find_all("span")
            price_change = [x.string for x in price_change]

            price = soup.find_all("span", id=re.compile('^ref_.*_l$'))[0].string
            price = str(unicode(price).encode('ascii', 'ignore')).strip().replace(",", "")

            return (price, price_change)
        except Exception as e:
            if retries > 0:
                retries -= 1
            else:
                raise Exception("Can't get current rate for scrip: " + symbol)

пример:

Getting market price: NSE:CIPLA
('558.55', [u'+4.70', u'(0.85%)'])

вы можете просто проанализировать результат этого запроса:

https://finance.google.com/finance/getprices?q=GOOG&x=NASD&p=1d&i=60&f=d,c,o,h,l,v

(GOOG на NASDAQ, один день, частота 60 секунд, дата, закрыть, высокий, низкий, открытый, объем)


У меня была такая же проблема в PHP.

я заменяю URL https://www.google.com/finance/converter?a=$amount&from=$from_Currency&to=$to_Currency

до

https://finance.google.com/finance/converter?a=1&from=$from_Currency&to=$to_Currency

отлично работает для меня.