Як я можу отримати котирування акцій за допомогою API Google Finance?


119

Я шукаю доступ до фінансових даних від служб Google.

Я знайшов цю URL-адресу, яка отримує дані про запаси для Microsoft.

Які всі можливі параметри дозволяє Google для такого типу HTTP-запиту? Я хотів би побачити всю різну інформацію, яку я міг би отримати.


36
Як ти знайшов цю URL-адресу?
timmyc

2
Ви можете легко отримати дані Google Finance через YQL, який простий та на основі REST. Приклад можна знайти тут: jarloo.com/google-finance-and-yql
Келлі

Це чудове запитання, чи є більше відповідей, які актуальні?
NickO

1
@ Timmyc - client=igПараметр наводить мене на думку, що це / було використано для віджета iGoogle. Тільки здогадка, хоча.
дата

Відповіді:


40

Існує цілий API для управління портфелями. * Посилання видалено. Google більше не надає API для розробників для цього.

Отримати котирування акцій трохи складніше. Я знайшов одну статтю, де хтось отримав котирування акцій за допомогою електронних таблиць Google.

Ви також можете використовувати гаджети, але я думаю, це не те, що ви шукаєте.

API, який ви згадуєте, цікавий, але не здається документально зафіксованим (наскільки я все-таки міг знайти його).

Ось деякі відомості про історичні ціни , лише для довідки.


5
Існує незадокументований API від Google, який ви можете використовувати для отримання інформації про запаси набагато простіше, оскільки він заснований на REST і не вимагає автентифікації. Ось приклад C # jarloo.com/google-stock-api
Келлі

24
Примітка: API Google Finance офіційно застарів з 26 травня 2011 року і буде закритий 20 жовтня 2012 року.
shawnwall

Ця відповідь здебільшого поза темою. Відповідь нижче - правильна.
Дан Даскалеску

74

API Google Finance Gadget офіційно засуджується з жовтня 2012 року , але в квітні 2014 року, він по - , як і раніше активний:

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 суперечить умовам служби Google .

Перевірте google-finance-get-stock-quote-realtime на повний код у python


1
Це привело мене саме до того, що я шукав! Дякую.
Програмне забезпечення Grizzly Peak

Але я не можу отримати обсяг, що торгується за цією URL-адресою. Ви можете мені допомогти, якщо мені теж потрібні деталі обсягу
Саші Кант

@DanDascalescu Дякую Ден. Схоже, це було просто вниз, коли я перевіряв це. Коментар видалено.
jpgeek

2
Дякуємо, актуальне сьогодні у вересні 2016 року
CleanBold

5
Мені сумно сказати, що станом на вересень 2017 року ці посилання є 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. тому він більше не функціонує.

Погодьтеся з відповіддю Парешкумара. Тепер є пітон обгортка GoogleFinance для виклику URL.

Встановіть 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 - це джерело, яке надає дані про запаси в режимі реального часу. Існують також інші API від Yahoo, такі як yahoo-finance , але вони затримуються на 15 хвилин для акцій NYSE та NASDAQ.


приємного реального часу, що я шукав!
eusoubrasileiro

3

Можливо, цікавий, документальний документ API API Google Finance містить розділ, в якому детально описується спосіб доступу до різних параметрів через JavaScript .

Я думаю, API JavaScript може бути обгорткою для запиту JSON, про який ви згадували вище ... можливо, ви можете перевірити, які HTTP-запити надсилаються.


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 для котирування акцій у реальному часі?
Саші Кант

Переважно так. Порівняйте GF_trade_time_utcз поточним часом / датою і ви будете суддею.
Маркос

Дякуємо за вашу відповідь, але тут обсяг не надходить у json, чи є інший спосіб чи URL-адреса, щоб отримати обсяг торгу?
Саші Кант


3

Проблема даних Yahoo та Google полягає в тому, що вони порушують умови надання послуг, якщо ви використовуєте їх для комерційного використання. Коли ваш веб-сайт / додаток ще маленький, це не велике, але як тільки ви трохи виросте, ви починаєте переставати і відмовляєтесь від бірж. Приклад ліцензованого рішення - FinancialContent: http://www.financialcontent.com/json.php або Xignite


2

Ось приклад, який ви можете використовувати. Хавент ще отримав 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"

Посилання 2 призначено для "NASDAQ-100"

і для всіх пов'язаних з NASDAQ посиланням 3

Я думаю, що це має бути так, інакше ви хочете, щоб те ж саме в позначеннях JSON було таким же, як у Microsoft

Будь ласка, перегляньте це старе повідомлення Я думаю, що це допоможе,

Оновлення:

Щоб знати деталі тома та інші подробиці, я створив vbscript, який використовує об'єкт IE для отримання деталей із посилання, і попереджає вміст у конкретному ідентифікаторі (Створіть .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, а також обсяг торгується, чи є послуги відпочинку?
Саші Кант

1
Будь ласка, зверніться до цього, щоб отримати детальну інформацію про реальний час, зазвичай ці посилання надають дані про повторний час за деяким винятком .. google.com/googlefinance/disclaimer/#realtime
MarmiK

Ще раз дякую брате, цей був дуже корисний, але все ж як я можу отримати інформацію про обсяг?
Саші Кант

1
Якщо ви знаєте про VBA або VBS на сторінці ( google.com/… ), ідентифікатор елемента - "market-data-div", що div містить ще 2 діви, а другий div має таблицю, що містить <td class="val">759.30M</td>подібний обсяг . Якщо ви хочете отримати додаткову допомогу, будь-ласка, опублікуйте якийсь код вашої роботи або загадку.
MarmiK

Ні, сер, ви не маєте жодного уявлення про VBA або VBS, але перевірте це точно
Саші Кант


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, потрібно просто перейти до Google так, ніби шукаєте пошуковий термін, введіть фінанси в пошукову систему, і з’явиться посилання на фінанси Google. Опинившись в пошуковій системі Google Finance Finance, введіть назву галочки в механізм API фінансових даних, і результат відобразиться. Однак слід зауважити, що всі графіки фінансування Google затримуються на 15 хвилин, і в крайньому випадку їх можна використовувати для кращого розуміння минулої історії біржовика, а не поточної ціни.

Рішенням інформації про затримку діаграми є отримання API фінансових даних у реальному часі. Прикладом цього може бути інтерфейс barchartondemand, який містить інформацію про цитати в реальному часі, а також інші детальні функції, які спрощують пошук точної діаграми, яку ви шукаєте. Завдяки повністю настроюваним функціям та специфічним інструментам програмування для точної необхідної інформації про торгів, інструменти barchartondemand випереджають фінанси Google з великим запасом.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.