Google Finance API를 사용하여 주식 시세를 얻으려면 어떻게 해야 합니다.
구글 서비스에서 재무 데이터에 액세스할 수 있는 방법을 찾고 있습니다.
마이크로소프트의 재고 데이터를 얻을 수 있는 URL을 찾았습니다.
구글이 이런 종류의 HTTP 요청에 허용하는 모든 가능한 매개 변수는 무엇입니까?제가 얻을 수 있는 모든 다양한 정보를 보고 싶습니다.
Google Finance Gadget API는 2012년 10월부터 공식적으로 폐지되었습니다.
2014년 4월 현재도 여전히 활동 중입니다.
2022년 3월 현재 완전히 죽었다.
다음 차트도 얻을 수 있습니다.https://www.google.com/finance/getchart?q=YELP
귀하의 애플리케이션이 일반 소비용인 경우 Google Finance API를 사용하는 것은 Google의 서비스 약관에 위배됩니다.
python의 전체 코드를 보려면 google-finance-get-stock-quote-realtime을 확인하십시오.
포트폴리오를 관리하기 위한 전체 API가 있습니다.* 링크가 삭제되었습니다.Google은 더 이상 이를 위한 개발자 API를 제공하지 않습니다.
주가를 구하는 것은 조금 어렵다.구글 스프레드시트로 주식 시세를 받은 기사를 하나 찾았어요.
가젯도 사용할 수 있지만, 그런 걸 원하는 건 아닌 것 같아요.
말씀하신 API는 흥미롭지만 문서화되어 있지 않은 것 같습니다(어쨌든 제가 찾을 수 있는 한).
참고용으로 역사적 가격에 대한 정보를 알려드리겠습니다.
나는 이 사이트가 도움이 된다는 것을 알았습니다.
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
편집: API 호출이 Google에 의해 제거되었습니다.더 이상 작동하지 않습니다.
파레슈쿠마의 대답에 동의하세요.이제 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"
}
]
구글 파이낸스는 실시간 주식 데이터를 제공하는 소스입니다.야후파이낸스 등 야후의 API도 있지만 NYSE와 나스닥 주식은 15분 늦어지고 있다.
야후와 구글 데이터는 상업적인 용도로 사용할 경우 서비스 약관을 위반한다는 것이 문제입니다.사이트나 앱이 아직 작을 때는 별로 중요하지 않지만, 조금 커지면 교환이 중단되고 중단됩니다.라이센스 솔루션 예로는 Financial Content: http://www.financialcontent.com/json.php 또는 Xignite가 있습니다.
Google Finance API 문서에는 JavaScript를 통해 다양한 매개변수에 액세스하는 방법에 대한 자세한 섹션이 포함되어 있습니다.
JavaScript API는 위에서 언급한 JSON 요청에 대한 래퍼일 수 있습니다.송신되고 있는HTTP 요구를 확인할 수 있습니다.
이 API는 구글용 액티브 API가 아니므로 Xignite를 사용해볼 수 있습니다.단, 유료입니다.http://www.xignite.com
설명하신 것처럼 가장 간단한 방법은 'Dow Jones Industrial Average'에 대한 링크입니다.
링크 2는 'NASDAQ-100'용입니다.
이 기능이 필요합니다.그렇지 않으면 마이크로소프트와 같은 JSON 표기법을 사용할 수 있습니다.
이 오래된 게시물을 참고해 주세요. 이게 도움이 될 것 같아요.
업데이트:
볼륨 및 기타 세부 정보를 알기 위해 IE 개체를 사용하여 링크에서 세부 정보를 가져오는 vbscript를 만들고 특정 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
이게 도움이 될 거라고 확신해요.
또한 Google Sheets에서 현재 및 과거 데이터 모두에 대한 기능을 통해 Google 약혼자에서 직접 데이터를 가져올 수도 있습니다.
GOOGLEFINANCE("NASDAQ:GOOGL", "price", DATE(2014,1,1), DATE(2014,12,31), "DAILY")
또 다른 방법은 패키지로 야후 파이낸스를 이용하는 것이다.또는 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 블로그 투고에 구글 파이낸스 티커 견적 데이터가 한 줄 한 줄 적혀 있습니다.
다음은 사용할 수 있는 예입니다.Havent는 아직 Google Finance를 인수했지만, 여기 Yahoo의 예가 있습니다.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());
}
}
}
거인의 어깨에 올라탄 채...다음은 구글의 현재 주식 데이터를 모두 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&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&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&q=FBM";
GF_chart_url="/finance/chart?q=NYSEARCA:FBM&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";
구글 주식 시세 API가 사라졌습니다.그러나 Investor's Exchange는 견적 데이터에 매우 쉽게 사용할 수 있는 API를 제공합니다.
저는 2년 전에 Intrinio Two에서 주식 데이터와 펀더멘털용 앱을 직접 개발했지만 경쟁사에 밀려 프로젝트를 포기했습니다.
자바에서 구축했는데 여러 스택을 지원합니다.당시에는 테스트 목적으로 무료로 API에 접속할 수 있었지만, 지금은 고객님의 요구에 따라 패키지를 만들고 있다고 생각합니다.
어쨌든 매우 유용하고 저렴한 요금을 청구할 수 있었던 것으로 기억하는데, 라이브러리는 문서화되어 있기 때문에 json의 데이터를 쉽게 얻을 수 있습니다.
구글의 금융 데이터 API를 이용해 차트 데이터를 찾으려면 검색어를 찾듯 구글에 접속해 검색엔진에 finance를 입력하면 구글 파이낸스 링크가 뜬다.Google 금융 검색 엔진에서 금융 데이터 API 엔진에 티커 이름을 입력하면 결과가 표시됩니다.그러나 모든 Google 재무 차트는 15분 정도 지연되며, 현재 가격보다는 티커의 과거 이력을 더 잘 이해하기 위해 사용할 수 있습니다.
지연된 차트 정보에 대한 해결책은 실시간 재무 데이터 API를 얻는 것입니다.그 예로는 실시간 견적 정보와 함께 원하는 정확한 차트를 쉽게 찾을 수 있는 기타 세부 기능을 갖춘 Barchartondemand 인터페이스가 있습니다.완전한 커스터마이즈 가능 기능과 필요한 정확한 거래 정보를 위한 특정 프로그래밍 도구를 갖춘 Barchartemand의 툴은 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>
언급URL : https://stackoverflow.com/questions/527703/how-can-i-get-stock-quotes-using-google-finance-api
'source' 카테고리의 다른 글
두 개의 테이블(둘 다 자기 결합에서 파생됨)을 결합하여 세 번째 테이블을 만들려면 어떻게 해야 합니까? (0) | 2022.11.19 |
---|---|
JavaScript에서 세트를 매핑/축소/필터링하는 방법 (0) | 2022.11.19 |
php가 비어있을 때 null입니까? (0) | 2022.11.19 |
Balley 및 HttpEntity를 사용하지 않는 POST 멀티파트 요구 작업 (0) | 2022.11.19 |
Laravel 5.1에서 Laravel 5.8로 업그레이드한 후 whereHas()가 느려짐 (0) | 2022.11.19 |