Как я могу получить котировки акций, используя Google Finance API?

Я ищу доступ к финансовым данным из служб Google.

Я нашел этот URL, который получает данные о запасах для Microsoft.

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

15 ответов

Решение

Есть целый API для управления портфелями. * Ссылка удалена. Google больше не предоставляет API разработчика для этого.

Получить котировки акций немного сложнее. Я нашел одну статью, где кто-то получил котировки акций с помощью таблиц Google.

Вы также можете использовать гаджеты, но я думаю, это не то, что вам нужно.

Упомянутый вами API интересен, но, похоже, не документирован (насколько я смог найти в любом случае).

Вот некоторая информация об исторических ценах, просто для справки.

API гаджетов Google Finance официально объявлен устаревшим с октября 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

Обратите внимание, что если ваше приложение предназначено для общего пользования, использование Google Finance API противоречит условиям обслуживания Google.

Проверьте http://digitalpbk.com/stock/google-finance-get-stock-quote-realtime для полного кода на python

Я нашел этот сайт полезным.

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 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 finance - это источник, который предоставляет данные об акциях в реальном времени. Есть и другие API от Yahoo, такие как Yahoo Finance, но они задерживаются на 15 минут для акций NYSE и NASDAQ.

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

Вы также можете извлекать данные из Google Fiance непосредственно в Google Sheets черезGOOGLEFINANCE()функция как для текущих, так и для исторических данных:

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

Другой способ — использовать Yahoo Finance через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"
  }
}

Выходит за рамки вашего вопроса . Если есть необходимость проанализировать всю страницу тикера Google Finance , есть построчная очистка данных котировок тикера Google Finance в сообщении блога Python об этом на SerpApi.

Возможно, интерес представляет документ API Google Finance, содержащий раздел, в котором подробно описано, как получить доступ к различным параметрам через JavaScript.

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

Опираясь на плечи гигантов... вот одна строчка, которую я написал, чтобы записать все текущие биржевые данные 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"; 

Это больше не активный API для Google, вы можете попробовать Xignite, хотя они берут: http://www.xignite.com/

Самый простой способ, как вы объяснили, это ссылка на "Промышленный индекс Доу-Джонса".

Ссылка 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

Я уверен, что это поможет..

Вот пример, который вы можете использовать. Еще не получил 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());

                }

            }
        }

API котировок акций Google исчез. Тем не менее, Investor's Exchange предлагает API, который очень прост в использовании для данных котировок.

Try with this: 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:

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

Я лично создал приложение для биржевых данных и фундаментальных данных с Intrinio два года назад, но отказался от проекта, потому что меня опередил на рынке конкурент.

Я построил его на Java, но они поддерживают несколько стеков. В то время вы могли бесплатно получить доступ к их API для целей тестирования, но я думаю, что сейчас они создают пакеты в соответствии с вашими потребностями.

В любом случае, они были исключительно полезными и взимали низкую плату, насколько я помню, а их библиотека хорошо документирована, поэтому извлекать данные в json очень просто.

Чтобы найти данные графиков с помощью API финансовых данных Google, нужно просто зайти в Google, как будто он ищет поисковый запрос, ввести в поисковую систему финансы, и появится ссылка на финансы Google. Попав в поисковую систему Google Finance, введите имя тикера в API финансовых данных, и результат отобразится. Однако следует отметить, что все финансовые графики Google откладываются на 15 минут и, самое большее, могут использоваться для лучшего понимания прошлой истории тикера, а не текущей цены.

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

Другие вопросы по тегам