简体   繁体   English

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

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

I'm looking for access to financial data from Google services.我正在寻找对来自 Google 服务的财务数据的访问权限。

I found this URL that gets the stock data for Microsoft.我找到了获取 Microsoft 股票数据的这个 URL

What are all the possible parameters that Google allows for this kind of HTTP request? Google 允许此类 HTTP 请求的所有可能参数是什么? I'd like to see all the different information that I could get.我想看看我能得到的所有不同的信息。

The Google Finance Gadget API has been officially deprecated since October 2012 , but as of April 2014, it's still active. Google Finance Gadget API 自 2012 年 10 月起正式弃用 但截至 2014 年 4 月,它仍然有效。 It is completely dead as of March 2022.截至 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 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

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

Note that if your application is for public consumption, using the Google Finance API is against Google's terms of service .请注意,如果您的应用程序是供公众使用的,那么使用 Google Finance API 将违反 Google 的服务条款

Check google-finance-get-stock-quote-realtime for the complete code in python检查google-finance-get-stock-quote-realtime以获取 python 中的完整代码

There's a whole API for managing portfolios.有一个用于管理投资组合的完整 API。 *Link removed. *链接已删除。 Google no longer provides a developer API for this. Google 不再为此提供开发者 API。

Getting stock quotes is a little harder.获取股票报价有点困难。 I found one article where someone got stock quotes using Google Spreadsheets.我发现一篇文章有​​人使用 Google 电子表格获取股票报价。

You can also use the gadgets but I guess that's not what you're after.您也可以使用这些小工具,但我想这不是您想要的。

The API you mention is interesting but doesn't seem to be documented (as far as I've been able to find anyway).您提到的 API 很有趣,但似乎没有记录(据我无论如何都能找到)。

Here is some information on historical prices , just for reference sake.以下是一些历史价格信息,仅供参考。

I found this site helpful.我发现这个网站很有帮助。

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

It links to an API yahoo seems to offer that is very simple and useful.它链接到一个 yahoo 似乎提供的非常简单和有用的 API。

For instance:例如:

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

Full details here:完整的细节在这里:

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

Edit: the api call has been removed by google.编辑: api 调用已被谷歌删除。 so it is no longer functioning.所以它不再起作用。

Agree with Pareshkumar's answer.同意 Pareshkumar 的回答。 Now there is a python wrapper googlefinance for the url call.现在有一个用于 url 调用的 python 包装器googlefinance

Install googlefinance安装 googlefinance

$pip install googlefinance

It is easy to get current stock price:很容易得到当前的股票价格:

>>> 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"
  }
]

Google finance is a source that provides real-time stock data.谷歌财经是提供实时股票数据的来源。 There are also other APIs from yahoo, such as yahoo-finance , but they are delayed by 15min for NYSE and NASDAQ stocks.还有来自 yahoo 的其他 API,例如yahoo-finance ,但它们对 NYSE 和 NASDAQ 股票延迟了 15 分钟。

The problem with Yahoo and Google data is that it violates terms of service if you're using it for commercial use.雅虎和谷歌数据的问题在于,如果您将其用于商业用途,则会违反服务条款。 When your site/app is still small it's not biggie, but as soon as you grow a little you start getting cease and desists from the exchanges.当您的网站/应用程序仍然很小时,它并不是什么大不了的,但是一旦您长大一点,您就会开始停止并停止交换。 A licensed solution example is FinancialContent: http://www.financialcontent.com/json.php or Xignite获得许可的解决方案示例是 FinancialContent: http ://www.financialcontent.com/json.php 或Xignite

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

Perhaps of interest, the Google Finance API documentaton includes a section detailing how to access different parameters via JavaScript .也许有趣的是,Google Finance API 文档包含一个详细说明如何通过 JavaScript 访问不同参数的部分

I suppose the JavaScript API might be a wrapper to the JSON request you mention above... perhaps you could check which HTTP requests are being sent.我想 JavaScript API 可能是您上面提到的 JSON 请求的包装器......也许您可以检查正在发送哪些 HTTP 请求。

The simplest way as you have explained is this link this is for 'Dow Jones Industrial Average'正如您所解释的,最简单的方法是此链接,这是针对“道琼斯工业平均指数”的

Link 2 is for 'NASDAQ-100'链接 2用于“纳斯达克 100”

and for all related to NASDAQ link 3以及所有与纳斯达克相关的链接 3

I think this should be it, else you want same in JSON notations the same as Microsoft我认为应该是这样,否则您希望在 JSON 符号中与 Microsoft 相同

Please refer this old post I think this will help,请参考这个旧帖子,我认为这会有所帮助,

Update:更新:

To know the details of volume and other details, I have created a vbscript that is using IE object to fetch details from the link, and alerts the content in the particular id(Create a .vbs file and run it..要了解卷的详细信息和其他详细信息,我创建了一个 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

this will alert the values from page like this这将像这样提醒页面中的值

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

I am sure this will help..我相信这会有所帮助..

The Google stock quote API has gone away.谷歌股票报价 API 已经消失。 However, Investor's Exchange offers an API that's very easy to use for quote data.但是, Investor's Exchange 提供了一个非常易于用于报价数据的 API

Here is an example that you can use.这是您可以使用的示例。 Havent got Google Finance yet, but Here is the Yahoo Example.还没有获得谷歌财经,但这里是雅虎的例子。 You will need the HTMLAgilityPack , Which is awesome.您将需要HTMLAgilityPack ,这太棒了。 Happy Symbol Hunting.快乐的符号狩猎。

Call the procedure by using YahooStockRequest(string Symbols);使用YahooStockRequest(string Symbols);调用该过程

Where Symbols = a comma-delimited string of symbols, or just one symbol其中 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());

                }

            }
        }

You can also pull data from Google Fiance directly in Google Sheets via GOOGLEFINANCE() function for both current and historical data:您还可以通过GOOGLEFINANCE()函数直接在 Google 表格中从 Google Fiance 中提取当前和历史数据的数据:

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

Another way is to use Yahoo finance instead via yfinance package .另一种方法是通过yfinance使用 Yahoo Finance。 Or with such query which will return a JSON:或者使用将返回 JSON 的此类查询:

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

Code to parse price and panel on the right, and example in the online IDE :解析右侧价格和面板的代码,以及在线 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 output: 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"
  }
}

Out of scope of your question .超出您的问题范围 If there's a need to parse the whole Google Finance Ticker page, there's a line-by-line scrape Google Finance Ticker Quote Data in Python blog post about it at SerpApi.如果需要解析整个Google Finance Ticker页面,可以在 SerpApi 的 Python 博客文章中逐行抓取 Google Finance Ticker Quote Data

Building upon the shoulders of giants...here's a one-liner I wrote to zap all of Google's current stock data into local Bash shell variables:建立在巨人的肩膀上......这是我写的一个单行代码,用于将所有谷歌当前的股票数据转换为本地 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"

Then you will have variables like $GF_last $GF_open $GF_volume etc. readily available.然后,您将拥有 $GF_last $GF_open $GF_volume 等变量。 Run env or see inside /tmp/stockprice.tmp.log运行 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.

So for stock="FBM" /tmp/stockprice.tmp.log (and your environment) will contain:因此,对于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"; 

I have personally built an app for stock data and fundamentals with Intrinio Two years ago but abandoned the project because I was beaten to market by a competitor.两年前,我亲自使用Intrinio构建了一个用于股票数据和基本面的应用程序,但由于被竞争对手抢占市场而放弃了该项目。

I built it in Java but they support multiple stacks.我用 Java 构建了它,但它们支持多个堆栈。 Back then, You could access their api for free for testing purposes, but I think they build packages based on your needs now.那时,您可以免费访问他们的 api 以进行测试,但我认为他们现在根据您的需求构建包。

In any case, they were exceptionally helpful and charge low fees from what I remember, and their library is well documented so pulling data in json is very straightforward.无论如何,他们非常乐于助人,并且从我记忆中收取的费用很低,而且他们的库有据可查,因此在 json 中提取数据非常简单。

In order to find chart data using the financial data API of Google, one must simply go to Google as if looking for a search term, type finance into the search engine, and a link to Google finance will appear.要使用谷歌的金融数据API查找图表数据,只需像寻找搜索词一样去谷歌,在搜索引擎中输入金融,就会出现一个谷歌金融的链接。 Once at the Google finance search engine, type the ticker name into the financial data API engine and the result will be displayed.在 Google 金融搜索引擎中,将股票代码名称输入到金融数据 API 引擎中,结果将显示出来。 However, it should be noted that all Google finance charts are delayed by 15 minutes, and at most can be used for a better understanding of the ticker's past history, rather than current price.不过需要注意的是,所有谷歌财经图表都会延迟15分钟,最多可以用来更好地了解股票的过去历史,而不是当前价格。

A solution to the delayed chart information is to obtain a real-time financial data API.图表信息延迟的解决方案是获取实时金融数据API。 An example of one would be the barchartondemand interface that has real-time quote information, along with other detailed features that make it simpler to find the exact chart you're looking for.一个例子是 barchartondemand 界面,它具有实时报价信息,以及其他详细功能,可以更轻松地找到您正在寻找的确切图表。 With fully customizable features, and specific programming tools for the precise trading information you need, barchartondemand's tools outdo Google finance by a wide margin. barchartondemand 的工具具有完全可定制的功能,以及针对您需要的精确交易信息的特定编程工具,远远超过了 Google 金融。

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

It will return you all available details about the mentioned stock.它将返回有关上述股票的所有可用详细信息。

eg out put would look like below:例如,输出如下所示:

// [ {
"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"
}
]

You can have your company stock symbol at the end of this URL to get its details:您可以在此 URL 的末尾添加您的公司股票代码以获取其详细信息:

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

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

相关问题 使用 Yahoo Finance API 检索股票行情 - Retrieving Stock Quotes using Yahoo Finance API 我如何从Finance.yahoo.com获取股价,成交量? - How can I get the stock price, volume from finance.yahoo.com? 有什么方法可以像Google或Yahoo一样实时获取股票报价? - is there any way by which i can get stock quotes real time just as Google or Yahoo does? jBloomberg API获取股票报价异常 - jBloomberg api to get stock quotes exception 使用硒webdriver无法在雅虎财务中找到股票价格 - can't find stock price in yahoo finance using selenium webdriver 如何使用带有JSON的Google API获取中文单词? - How can I get Chinese words using Google API with JSON? 使用谷歌金融API或雅虎金融API构建(延迟价格)交易系统 - Building (delayed prices) trading system using google finance API or yahoo finance API 如何使用 Google Drive API v3 获取 Google 电子表格文件 ID? - How can I get Google spreadsheets file Id by using Google drive API v3? Java:获取Google财经API的定位价格 - Java: Get position's price Google Finance API 使用Yahoo Finance Quotes时jfreechart崩溃 - jfreechart crashes when using Yahoo Finance Quotes
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM