如何使用 GoogleFinanceAPI 获得股票报价?

我正在寻找从谷歌服务获取财务数据的途径。

我找到了为微软获取股票数据的 这个网址

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

318119 次浏览

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

获得股票报价有点困难。我发现一篇文章,有人得到股票报价使用谷歌电子表格。

你也可以使用 小玩意儿,但我想这不是你想要的。

您提到的 API 很有趣,但似乎没有文档记录(就我所能找到的而言)。

这里有一些关于 历史价格的信息,仅供参考。

也许有意思的是,GoogleFinanceAPI 文档包含 详细介绍如何通过 JavaScript 访问不同参数的部分

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

我觉得这个网站很有用。

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

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

例如:

Http://finance.yahoo.com/d/quotes.csv?s=goog+aapl&f=snl1

详情请浏览此网页:

Http://www.gummy-stuff.org/yahoo-data.htm

这里有一个你可以使用的例子。虽然还没有谷歌财经,但这里有一个雅虎的例子。你会需要 HTMLAgilityPack的,这很棒。符号搜寻快乐。

使用 YahooStockRequest(string 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());


}


}
}

谷歌金融小工具 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

请注意,如果您的应用程序是针对 公共消费,使用谷歌财经 API 是违反谷歌的服务条款的。

请检查 Google-finance-get-stock-quote-real time以获得 python 中的完整代码

建立在巨人的肩膀上... ... 下面是我写的一句俏皮话,把谷歌当前的所有股票数据转换成本地的 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 _ music 等变量了,运行 env 或者查看/tmp/stockprice e.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";

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

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

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

链接2 是“ NASDAQ-100”

以及所有与纳斯达克 连结3有关的股票

我认为这应该是它,否则你想在 JSON 符号相同的微软

请参考此 旧职位我认为这将有所帮助,

更新:

为了了解卷的细节和其他细节, 我已经创建了一个 vbscript,它使用 IE 对象从链接中获取详细信息,并警告特定 id 中的内容(Create a。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

我相信这会有所帮助。

试试这个: 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"
}
]

你可以把你的公司股票代码放在这个网址的末尾来获取它的详细信息:

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

编辑: api 调用已被谷歌删除。因此它不再运行。

同意 Pareshkumar 的回答。现在有一个用于 URL 调用的 Python 包装器 谷歌财经

安装谷歌金融

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

谷歌金融是一个提供实时股票数据的来源。还有其他来自雅虎的 API,如 雅虎金融,但他们推迟了15分钟的纽约证券交易所和纳斯达克股票。

为了使用 Google 的金融数据 API 来查找图表数据,你只需要像查找搜索关键词一样登录 Google,在搜索引擎中输入 finance,然后就会出现一个到 Google finance 的链接。在 Google 金融搜索引擎中,在金融数据 API 引擎中输入股票代码名称,结果就会显示出来。然而,应该指出的是,所有的谷歌财务图表都会延迟15分钟,最多只能用来更好地了解股票代码的过去历史,而不是当前的价格。

一种解决延迟图表信息的方法是获取实时的财务数据 API。其中一个例子就是拥有实时报价信息的 barchartondemand 界面,以及其他详细功能,这些功能使您更容易找到您正在寻找的确切图表。拥有完全可定制的功能,以及针对您所需的精确交易信息的特定编程工具,barchartondemand 的工具远远超过了谷歌金融。

谷歌股票报价 API 已经消失了。然而,投资者交易所提供 API非常容易用于报价数据。

你也可以通过 GOOGLEFINANCE()函数直接从 Google 未婚夫那里获取当前和历史数据:

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

另一种方法是通过 yfinance包裹使用雅虎财务,或者使用这样的查询返回一个 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"
}
}

不在你的问题范围之内。如果需要解析整个 谷歌金融股票页面,SerpApi 上有一篇关于 用 Python 抓取 Google 财经报价数据页面的逐行博客文章。

两年前,我个人用 Intrinio开发了一个用于股票数据和基本面的应用程序,但是因为被一个竞争对手击败而放弃了这个项目。

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

在任何情况下,他们都是非常有用的,而且从我的记忆中收取的费用也很低,而且他们的库有很好的文档记录,所以在 json 中提取数据非常简单。