Google Finance API를 사용하여 주식 시세를 받으려면 어떻게해야합니까?


119

Google 서비스의 재무 데이터에 대한 액세스 권한을 찾고 있습니다.

Microsoft의 주식 데이터를 가져 오는 이 URL 을 찾았 습니다.

Google이 이러한 종류의 HTTP 요청에 허용하는 모든 가능한 매개 변수는 무엇입니까? 얻을 수있는 모든 다른 정보를보고 싶습니다.


36
그 URL을 어떻게 찾았습니까?
timmyc

2
간단하고 REST 기반 인 YQL을 통해 Google Finance 데이터를 쉽게 얻을 수 있습니다. 예제는 여기에서 찾을 수 있습니다 : jarloo.com/google-finance-and-yql
켈리

이것은 좋은 질문입니다. 최신 답변이 더 있습니까?
NickO 2013 년

1
@ Timmyc-이 client=ig매개 변수는 이것이 iGoogle 위젯에 사용 / 사용되었다고 믿게합니다. 그래도 추측입니다.
dana aug.

답변:


40

포트폴리오 관리를위한 전체 API가 있습니다. * 링크가 제거되었습니다. Google은 더 이상 이에 대한 개발자 API를 제공하지 않습니다.

주식 시세를 얻는 것은 조금 더 어렵습니다. 누군가가 Google 스프레드 시트를 사용하여 주식 시세를받은 기사를 하나 발견했습니다.

가제트를 사용할 수도 있습니다. 있지만 그게 당신이 추구하는 것이 아닙니다.

언급하신 API는 흥미롭지 만 문서화되지 않은 것 같습니다 (어쨌든 내가 찾을 수있는 한).

다음은 참고 용으로 역사적인 가격에 대한 정보입니다 .


5
REST 기반이고 인증이 필요하지 않으므로 주식 정보를 훨씬 쉽게 얻을 수있는 Google의 문서화되지 않은 API가 있습니다. 다음은 C # 예제입니다. jarloo.com/google-stock-api
Kelly

24
참고 : Google Finance API는 2011 년 5 월 26 일부터 공식적으로 지원 중단되었으며 2012 년 10 월 20 일에 종료됩니다.
shawnwall

이 답변은 대부분 주제에서 벗어났습니다. 아래의 답이 정답입니다.
Dan Dascalescu

74

1
이것은 내가 찾던 것에 정확하게 저를 이끌었습니다! 감사.
Grizzly Peak Software

내가 너무 볼륨 세부 사항을 필요로하지만 나는이 URL을 통해 거래 볼륨을 얻을, 당신은 나를 도울 수 없습니다
Sashi 칸트를

@DanDascalescu 감사합니다 댄. 내가 확인했을 때 방금 다운 된 것 같습니다. 댓글이 삭제되었습니다.
jpgeek

2
감사합니다. 2016 년 9 월에도 여전히 관련이 있습니다
CleanBold

5
2017 년 9 월 현재 이러한 링크가 404ing이라는 점이 유감입니다.
세인트 존 존슨

17

이 사이트가 도움이된다는 것을 알았습니다.

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

API yahoo에 대한 링크는 매우 간단하고 유용한 것 같습니다.

예를 들면 :

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

여기에 전체 세부 정보 :

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


yahoo에서 curl을 사용하여 얻으십시오 curl -L "http://finance.yahoo.com/d/quotes.csv?s=msft&f=sl1d1t1c1ohgv&e=.csv". 컬 -L에서 필요하지 않으면 작동하지 않습니다
arulraj.net

9

편집 : api 호출이 Google에 의해 제거되었습니다. 더 이상 작동하지 않습니다.

Pareshkumar의 답변에 동의하십시오. 이제 URL 호출을위한 python wrapper 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"
  }
]

Google 금융은 실시간 주식 데이터를 제공하는 소스입니다. yahoo-finance 와 같은 yahoo의 다른 API도 있지만 NYSE 및 NASDAQ 주식의 경우 15 분 지연됩니다.


좋은 실시간, 내가 찾던 것!
eusoubrasileiro


3

거인의 어깨 위에 구축 ... 여기에 Google의 모든 주식 데이터를 로컬 Bash 셸 변수로 압축하기 위해 작성한 한 줄이 있습니다.

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"; 

실시간 주식 시세에 URL을 사용할 수 있습니까?
Sashi Kant 2013-08-16

대부분 그렇습니다. GF_trade_time_utc현재 시간 / 날짜와 비교 하면 귀하가 판단합니다.
Marcos

답변 해 주셔서 감사합니다.하지만 여기서 볼륨이 json으로 나오지 않습니다. 볼륨을 거래 할 수있는 다른 방법이나 URL이 있습니까?
Sashi 칸트


3

Yahoo 및 Google 데이터의 문제는 상업적 용도로 사용하는 경우 서비스 약관을 위반한다는 것입니다. 귀하의 사이트 / 앱이 여전히 작을 때 큰 문제는 아니지만 조금 성장하자마자 거래소에서 중단되고 거부됩니다. 라이선스 솔루션의 예는 FinancialContent : http://www.financialcontent.com/json.php 또는 Xignite입니다.


2

다음은 사용할 수있는 예입니다. Havent는 아직 Google Finance를 얻었지만 Yahoo 예가 있습니다. 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());

                }

            }
        }

2

설명하신 가장 간단한 방법은이 링크 가 'Dow Jones Industrial Average'입니다.

Link 2 는 'NASDAQ-100'용입니다.

NASDAQ 링크 3 과 관련된 모든

나는 이것이 있어야한다고 생각합니다. 그렇지 않으면 Microsoft와 동일한 JSON 표기법을 원합니다.

도움이 될 것 같은 이전 게시물을 참조하십시오 .

최신 정보:

볼륨 및 기타 세부 정보를 알기 위해 IE 개체를 사용하여 링크에서 세부 정보를 가져오고 특정 ID의 콘텐츠를 경고하는 vbscript를 만들었습니다 (.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

이것이 도움이 될 것이라고 확신합니다 ..


답변 해 주셔서 감사합니다. 하지만 거래량과 함께 json의 실시간 데이터가 필요합니다. 나머지 서비스가 있습니까?
Sashi Kant

1
실시간에 대한 자세한 내용은이 링크를 참조하세요. 일반적으로이 링크는 일부 예외를 제외하고 실시간 데이터를 제공합니다. google.com/googlefinance/disclaimer/#realtime
MarmiK 2013-08-24

다시 한 번 감사합니다. 이건 정말 도움이되었지만 볼륨 정보는 어떻게 얻을 수 있나요?
Sashi Kant 2013 년

1
페이지 ( google.com/… )에서 VBA 또는 VBS를 알고 있다면 요소의 ID는 'market-data-div'로 div에는 2 개의 div가 더 있고 두 번째 div에는 <td class="val">759.30M</td>이와 같은 볼륨 이 포함 된 테이블이 있습니다 . 더 많은 도움이 필요하면 작업 코드를 게시하거나 바이올린이 할 것입니다.
MarmiK 2013-09-05

아니요, VBA 또는 VBS에 대해 전혀 모르지만 확실히 확인하겠습니다. URL을 알려 주시면 볼륨 정보와 함께 실시간 주식 시세가 표시됩니까?
Sashi Kant 2013 년


1

이것을 시도하십시오 : 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>

0

구글의 금융 데이터 API를 이용하여 차트 데이터를 찾기 위해서는 검색어를 찾는 것처럼 구글에 가서 검색 엔진에 금융을 입력하면 구글 금융 링크가 나타납니다. Google 금융 검색 엔진에서 금융 데이터 API 엔진에 티커 이름을 입력하면 결과가 표시됩니다. 그러나 모든 Google 금융 차트는 15 분 지연되며 기껏해야 현재 가격이 아닌 티커의 과거 내역을 더 잘 이해하는 데 사용할 수 있습니다.

지연된 차트 정보에 대한 해결책은 실시간 재무 데이터 API를 얻는 것입니다. 예를 들어 실시간 견적 정보가있는 barchartondemand 인터페이스와 원하는 정확한 차트를 더 쉽게 찾을 수있는 기타 세부 기능이 있습니다. 완전히 사용자 정의 할 수있는 기능과 필요한 정확한 거래 정보를위한 특정 프로그래밍 도구를 갖춘 barchartondemand의 도구는 Google 금융을 크게 능가합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.