繁体   English   中英

如何使用 Google Finance API 获取股票报价?

[英]How can I get stock quotes using Google Finance API?

我正在寻找对来自 Google 服务的财务数据的访问权限。

我找到了获取 Microsoft 股票数据的这个 URL

Google 允许此类 HTTP 请求的所有可能参数是什么? 我想看看我能得到的所有不同的信息。

Google Finance Gadget API 自 2012 年 10 月起正式弃用 但截至 2014 年 4 月,它仍然有效。 截至 2022 年 3 月,它已完全死亡。

http://www.google.com/finance/info?q=NASDAQ:GOOG http://www.google.com/finance/info?q=CURRENCY:GBPUSD http://finance.google.com/finance/ info?client=ig&q=AAPL,YHOO

您还可以获取图表: https ://www.google.com/finance/getchart?q=YELP

请注意,如果您的应用程序是供公众使用的,那么使用 Google Finance API 将违反 Google 的服务条款

检查google-finance-get-stock-quote-realtime以获取 python 中的完整代码

有一个用于管理投资组合的完整 API。 *链接已删除。 Google 不再为此提供开发者 API。

获取股票报价有点困难。 我发现一篇文章有​​人使用 Google 电子表格获取股票报价。

您也可以使用这些小工具,但我想这不是您想要的。

您提到的 API 很有趣,但似乎没有记录(据我无论如何都能找到)。

以下是一些历史价格信息,仅供参考。

我发现这个网站很有帮助。

http://benjisimon.blogspot.com/2009/01/truly-simple-stock-api.html

它链接到一个 yahoo 似乎提供的非常简单和有用的 API。

例如:

http://finance.yahoo.com/d/quotes.csv?s=GOOG+AAPL&f=snl1

完整的细节在这里:

http://www.gummy-stuff.org/Yahoo-data.htm

编辑: api 调用已被谷歌删除。 所以它不再起作用。

同意 Pareshkumar 的回答。 现在有一个用于 url 调用的 python 包装器googlefinance

安装 googlefinance

$pip install googlefinance

很容易得到当前的股票价格:

>>> from googlefinance import getQuotes
>>> import json
>>> print json.dumps(getQuotes('AAPL'), indent=2)
[
  {
    "Index": "NASDAQ", 
    "LastTradeWithCurrency": "129.09", 
    "LastTradeDateTime": "2015-03-02T16:04:29Z", 
    "LastTradePrice": "129.09", 
    "Yield": "1.46", 
    "LastTradeTime": "4:04PM EST", 
    "LastTradeDateTimeLong": "Mar 2, 4:04PM EST", 
    "Dividend": "0.47", 
    "StockSymbol": "AAPL", 
    "ID": "22144"
  }
]

谷歌财经是提供实时股票数据的来源。 还有来自 yahoo 的其他 API,例如yahoo-finance ,但它们对 NYSE 和 NASDAQ 股票延迟了 15 分钟。

雅虎和谷歌数据的问题在于,如果您将其用于商业用途,则会违反服务条款。 当您的网站/应用程序仍然很小时,它并不是什么大不了的,但是一旦您长大一点,您就会开始停止并停止交换。 获得许可的解决方案示例是 FinancialContent: http ://www.financialcontent.com/json.php 或Xignite

这不再是谷歌的活跃 API,你可以试试 Xignite,虽然他们收费: http ://www.xignite.com

也许有趣的是,Google Finance API 文档包含一个详细说明如何通过 JavaScript 访问不同参数的部分

我想 JavaScript API 可能是您上面提到的 JSON 请求的包装器......也许您可以检查正在发送哪些 HTTP 请求。

正如您所解释的,最简单的方法是此链接,这是针对“道琼斯工业平均指数”的

链接 2用于“纳斯达克 100”

以及所有与纳斯达克相关的链接 3

我认为应该是这样,否则您希望在 JSON 符号中与 Microsoft 相同

请参考这个旧帖子,我认为这会有所帮助,

更新:

要了解卷的详细信息和其他详细信息,我创建了一个 vbscript,它使用 IE 对象从链接中获取详细信息,并提醒特定 id 中的内容(创建一个 .vbs 文件并运行它..

Set IE = CreateObject("InternetExplorer.Application")
while IE.readyState = 4: WScript.Sleep 10: wend
IE.Navigate "https://www.google.com/finance?q=INDEXNASDAQ%3ANDX&sq=NASDAQ&sp=2&ei=B3UoUsiIH5DIlgPEsQE"
IE.visible = true
while IE.readyState = 4: WScript.Sleep 10: wend
dim ht
ht= IE.document.getElementById("market-data-div").innerText
msgBox ht
IE.quit

这将像这样提醒页面中的值

3,124.54 0.00 (0.00%)
Sep 4 - Close
INDEXNASDAQ real-time data - Disclaimer
Range       -
52 week 2,494.38 - 3,149.24
Open        -
Vol.    0.00

我相信这会有所帮助..

谷歌股票报价 API 已经消失。 但是, Investor's Exchange 提供了一个非常易于用于报价数据的 API

这是您可以使用的示例。 还没有获得谷歌财经,但这里是雅虎的例子。 您将需要HTMLAgilityPack ,这太棒了。 快乐的符号狩猎。

使用YahooStockRequest(string Symbols);调用该过程

其中 Symbols = 逗号分隔的符号字符串,或只有一个符号

public string YahooStockRequest(string Symbols,bool UseYahoo=true)
        {
            {
                string StockQuoteUrl = string.Empty;

                try
                {
                    // Use Yahoo finance service to download stock data from Yahoo
                    if (UseYahoo)
                    {
                        string YahooSymbolString = Symbols.Replace(",","+");
                        StockQuoteUrl = @"http://finance.yahoo.com/q?s=" + YahooSymbolString + "&ql=1";
                    }
                    else
                    {
                        //Going to Put Google Finance here when I Figure it out.
                    }

                    // Initialize a new WebRequest.
                    HttpWebRequest webreq = (HttpWebRequest)WebRequest.Create(StockQuoteUrl);
                    // Get the response from the Internet resource.
                    HttpWebResponse webresp = (HttpWebResponse)webreq.GetResponse();
                    // Read the body of the response from the server.

                    HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
                    string pageSource;
                    using (StreamReader sr = new StreamReader(webresp.GetResponseStream()))
                    {
                        pageSource = sr.ReadToEnd();
                    }
                    doc.LoadHtml(pageSource.ToString());
                    if (UseYahoo)
                    {
                        string Results=string.Empty;
                        //loop through each Symbol that you provided with a "," delimiter
                        foreach (string SplitSymbol in Symbols.Split(new char[] { ',' }))
                        {
                            Results+=SplitSymbol + " : " + doc.GetElementbyId("yfs_l10_" + SplitSymbol).InnerText + Environment.NewLine;
                        }
                        return (Results);
                    }
                    else
                    {
                        return (doc.GetElementbyId("ref_14135_l").InnerText);
                    }

                }
                catch (WebException Webex)
                {
                    return("SYSTEM ERROR DOWNLOADING SYMBOL: " + Webex.ToString());

                }

            }
        }

您还可以通过GOOGLEFINANCE()函数直接在 Google 表格中从 Google Fiance 中提取当前和历史数据的数据:

GOOGLEFINANCE("NASDAQ:GOOGL", "price", DATE(2014,1,1), DATE(2014,12,31), "DAILY")

另一种方法是通过yfinance使用 Yahoo Finance。 或者使用将返回 JSON 的此类查询:

https://query1.finance.yahoo.com/v8/finance/chart/MSFT

解析右侧价格和面板的代码,以及在线 IDE 中的示例

from bs4 import BeautifulSoup
import requests, lxml, json
from itertools import zip_longest


def scrape_google_finance(ticker: str):
    # https://docs.python-requests.org/en/master/user/quickstart/#passing-parameters-in-urls
    params = {
        "hl": "en"
        }

    # https://docs.python-requests.org/en/master/user/quickstart/#custom-headers
    # https://www.whatismybrowser.com/detect/what-is-my-user-agent
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36",
        }

    html = requests.get(f"https://www.google.com/finance/quote/{ticker}", params=params, headers=headers, timeout=30)
    soup = BeautifulSoup(html.text, "lxml")
    
    # describe empty dict where data will be appended
    ticker_data = {
        "ticker_data": {},
        "about_panel": {}
    }
    
    ticker_data["ticker_data"]["current_price"] = soup.select_one(".AHmHk .fxKbKc").text
    ticker_data["ticker_data"]["quote"] = soup.select_one(".PdOqHc").text.replace(" • ",":")
    ticker_data["ticker_data"]["title"] = soup.select_one(".zzDege").text
    
    right_panel_keys = soup.select(".gyFHrc .mfs7Fc")
    right_panel_values = soup.select(".gyFHrc .P6K39c")
    
    for key, value in zip_longest(right_panel_keys, right_panel_values):
        key_value = key.text.lower().replace(" ", "_")

        ticker_data["about_panel"][key_value] = value.text
    
    return ticker_data
    

data = scrape_google_finance(ticker="GOOGL:NASDAQ")

print(json.dumps(data, indent=2))

JSON输出:

{
  "ticker_data": {
    "current_price": "$2,534.60",
    "quote": "GOOGL:NASDAQ",
    "title": "Alphabet Inc Class A"
  },
  "about_panel": {
    "previous_close": "$2,597.88",
    "day_range": "$2,532.02 - $2,609.59",
    "year_range": "$2,193.62 - $3,030.93",
    "market_cap": "1.68T USD",
    "volume": "1.56M",
    "p/e_ratio": "22.59",
    "dividend_yield": "-",
    "primary_exchange": "NASDAQ",
    "ceo": "Sundar Pichai",
    "founded": "Oct 2, 2015",
    "headquarters": "Mountain View, CaliforniaUnited States",
    "website": "abc.xyz",
    "employees": "156,500"
  }
}

超出您的问题范围 如果需要解析整个Google Finance Ticker页面,可以在 SerpApi 的 Python 博客文章中逐行抓取 Google Finance Ticker Quote Data

建立在巨人的肩膀上......这是我写的一个单行代码,用于将所有谷歌当前的股票数据转换为本地 Bash shell 变量:

stock=$1 

# Fetch from Google Finance API, put into local variables
eval $(curl -s "http://www.google.com/ig/api?stock=$stock"|sed 's/</\n</g' |sed '/data=/!d; s/ data=/=/g; s/\/>/; /g; s/</GF_/g' |tee /tmp/stockprice.tmp.log)

echo "$stock,$(date +%Y-%m-%d),$GF_open,$GF_high,$GF_low,$GF_last,$GF_volume"

然后,您将拥有 $GF_last $GF_open $GF_volume 等变量。 运行 env 或查看 /tmp/stockprice.tmp.log 内部

http://www.google.com/ig/api?stock=TVIX&output=csv by itself returns:

<?xml version="1.0"?>
<xml_api_reply version="1">
<finance module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1" row="0" section="0" >
<symbol data="TVIX"/>
<pretty_symbol data="TVIX"/>
<symbol_lookup_url data="/finance?client=ig&amp;q=TVIX"/>
<company data="VelocityShares Daily 2x VIX Short Term ETN"/>
<exchange data="AMEX"/>
<exchange_timezone data="ET"/>
<exchange_utc_offset data="+05:00"/>
<exchange_closing data="960"/>
<divisor data="2"/>
<currency data="USD"/>
<last data="57.45"/>
<high data="59.70"/>
<low data="56.85"/>

etc.

因此,对于stock="FBM" /tmp/stockprice.tmp.log (和您的环境)将包含:

GF_symbol="FBM"; 
GF_pretty_symbol="FBM"; 
GF_symbol_lookup_url="/finance?client=ig&amp;q=FBM"; 
GF_company="Focus Morningstar Basic Materials Index ETF"; 
GF_exchange="NYSEARCA"; 
GF_exchange_timezone=""; 
GF_exchange_utc_offset=""; 
GF_exchange_closing=""; 
GF_divisor="2"; 
GF_currency="USD"; 
GF_last="22.82"; 
GF_high="22.82"; 
GF_low="22.82"; 
GF_volume="100"; 
GF_avg_volume=""; 
GF_market_cap="4.56"; 
GF_open="22.82"; 
GF_y_close="22.80"; 
GF_change="+0.02"; 
GF_perc_change="0.09"; 
GF_delay="0"; 
GF_trade_timestamp="8 hours ago"; 
GF_trade_date_utc="20120228"; 
GF_trade_time_utc="184541"; 
GF_current_date_utc="20120229"; 
GF_current_time_utc="033534"; 
GF_symbol_url="/finance?client=ig&amp;q=FBM"; 
GF_chart_url="/finance/chart?q=NYSEARCA:FBM&amp;tlf=12"; 
GF_disclaimer_url="/help/stock_disclaimer.html"; 
GF_ecn_url=""; 
GF_isld_last=""; 
GF_isld_trade_date_utc=""; 
GF_isld_trade_time_utc=""; 
GF_brut_last=""; 
GF_brut_trade_date_utc=""; 
GF_brut_trade_time_utc=""; 
GF_daylight_savings="false"; 

两年前,我亲自使用Intrinio构建了一个用于股票数据和基本面的应用程序,但由于被竞争对手抢占市场而放弃了该项目。

我用 Java 构建了它,但它们支持多个堆栈。 那时,您可以免费访问他们的 api 以进行测试,但我认为他们现在根据您的需求构建包。

无论如何,他们非常乐于助人,并且从我记忆中收取的费用很低,而且他们的库有据可查,因此在 json 中提取数据非常简单。

要使用谷歌的金融数据API查找图表数据,只需像寻找搜索词一样去谷歌,在搜索引擎中输入金融,就会出现一个谷歌金融的链接。 在 Google 金融搜索引擎中,将股票代码名称输入到金融数据 API 引擎中,结果将显示出来。 不过需要注意的是,所有谷歌财经图表都会延迟15分钟,最多可以用来更好地了解股票的过去历史,而不是当前价格。

图表信息延迟的解决方案是获取实时金融数据API。 一个例子是 barchartondemand 界面,它具有实时报价信息,以及其他详细功能,可以更轻松地找到您正在寻找的确切图表。 barchartondemand 的工具具有完全可定制的功能,以及针对您需要的精确交易信息的特定编程工具,远远超过了 Google 金融。

试试这个:http: //finance.google.com/finance/info?client=ig &q=NASDAQ:GOOGL

它将返回有关上述股票的所有可用详细信息。

例如,输出如下所示:

// [ {
"id": "694653"
,"t" : "GOOGL"
,"e" : "NASDAQ"
,"l" : "528.08"
,"l_fix" : "528.08"
,"l_cur" : "528.08"
,"s": "0"
,"ltt":"4:00PM EST"
,"lt" : "Dec 5, 4:00PM EST"
,"lt_dts" : "2014-12-05T16:00:14Z"
,"c" : "-14.50"
,"c_fix" : "-14.50"
,"cp" : "-2.67"
,"cp_fix" : "-2.67"
,"ccol" : "chr"
,"pcls_fix" : "542.58"
}
]

您可以在此 URL 的末尾添加您的公司股票代码以获取其详细信息:

http://finance.google.com/finance/info?client=ig&q=<YOUR COMPANY STOCK SYMBOL>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM