【问题标题】:google finance api not working from 6/september/2017谷歌金融 api 从 2017 年 9 月 6 日起不起作用
【发布时间】:2017-09-07 07:48:19
【问题描述】:

我使用谷歌金融 api 来获取股票报价并在我的网站上显示内容。从 2017 年 9 月 6 日起突然停止工作。我用来获取股票报价的网址是https://finance.google.com/finance/info?client=ig&q=SYMBOL&callback=?。

以前,我使用的是 yahoo Finance api,但结果不一致。所以,我切换到了谷歌金融 api。

您能帮我解决这个问题吗?

谢谢, 拉姆

【问题讨论】:

标签: javascript yahoo-finance stockquotes google-finance-api google-api-javascript-client


【解决方案1】:

这个网址有效。我认为只是网址从 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

【讨论】:

【解决方案2】:

最后我开始使用雅虎财经。数据不是实时的,有 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 以获取所需的字段。

谢谢, 拉姆

【讨论】:

  • 我认为它不支持印度股票,是吗?
【解决方案3】:

我们遇到了同样的问题,我们在下面找到了 Microsoft Bing API 为股票市场提供的替代 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

谢谢,夏马尔

【讨论】:

  • 你知道如何获取ohlc格式以及如何选择时间段(不是1d、1m等分辨率)
  • 谢谢Shyamal,您传递的符号值是否有解释?例如,我为 NSE 符号传递什么?
【解决方案4】:

昨天遇到这个问题时,我很想找这样的线程!

正如 Salketer 所说,Google Finance API 已于 2012 年正式“关闭”。但是,由于某种原因,它仍在工作到 2017 年 9 月 5 日。我构建了一个程序来管理我的投资组合,该程序使用 GF API 获取实时报价美股。它于 2017 年 9 月 6 日停止工作,所以我假设“秘密提供”API 背后的工程师现在“实际上”停止了该服务。

我找到了替代方案https://www.alphavantage.co/documentation/,这似乎是免费实时美国股票报价的最佳替代方案。他们只需要您的电子邮件,没有别的。有点慢,因为它还没有多符号查询,但是乞丐不能是选择者。

【讨论】:

  • 你提供的链接很有用,我今天要测试一下。它提供实时数据吗?
  • Google 财经将提供的实时数据。 OTC 或 TSE 等一些市场有 15 分钟的延迟。需要注意的一件事是,它们按分钟而不是秒。
【解决方案5】:

在今年 5 月 Verizon 收购 yahoo 并终止免费 API 服务后,我在使用 Yahoo Finance 很长时间后不得不切换到 Google Finance。我回去重新研究了这个问题,有人创建了一个新的 Yahoo Finance API 调用,它与新的 yahoo API 一起工作。 https://stackoverflow.com/a/44092983/8316350

python 源码和安装程序可以在这里找到:https://github.com/c0redumb/yahoo_quote_download

参数是(ticker、start_date 和 end_date),其中日期为 yyyymmdd 格式并返回 unicode 字符串列表。以下测试将下载几周的数据,然后仅提取调整后的收盘价以返回名为 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']

【讨论】:

    【解决方案6】:

    在获得?info 链接之前,我是从 Google 财经页面手动读取每只股票的。由于这不再有效,我将返回网页。

    这是我的 python sn-p:

    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%)'])
    

    【讨论】:

      【解决方案7】:

      你可以简单地解析这个请求的结果:

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

      (纳斯达克的 GOOG,一天,频率 60 秒,DATE,CLOSE,HIGH,LOW,OPEN,VOLUME)

      【讨论】:

      • 请告诉我调用此 API 的最佳方式?这是否可以在此 API 中调用以逗号分隔的多个索引?
      【解决方案8】:

      我在 PHP 中遇到了同样的问题。

      我替换了网址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

      对我来说很好。

      【讨论】:

      • 嗨 surya,你能举个股票代码的例子吗?
      猜你喜欢
      • 2018-01-27
      • 1970-01-01
      • 1970-01-01
      • 2018-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多