По мотивам поста https://smart-lab.ru/blog/616708.php
Вот и мой велосипед на питоне для получения котировок с Мосбиржи
from urllib import request, error from json import loads import pprint class GetRawDataException(Exception): pass class GetPricesException(Exception): pass def get_prices(start_date: str, end_date: str, ticker: str) -> dict: """ Возвращает словарь: {дата:цена закрытия} """ req = 'https://iss.moex.com/iss/history/engines/stock/markets/shares/boards/TQBR/securities/{}.json?from={}&till={}'.format(ticker, start_date, end_date) contents = get_raw_data(req) try: data = loads(contents) prices = {x[1] : x[11] for x in data['history']['data']} return(prices) except Exception as err: raise GetPricesException(err) def get_raw_data(req: str) -> str: """ Возвращает результат запроса к серверу Мосбиржи """ try: contents = request.urlopen(req).read() return(contents) except URLError as err: raise GetRawDataException(err) try: prices = get_prices('2019-05-23', '2019-05-30', 'GAZP') pprint.pprint(prices) except GetRawDataException as err: print('Error getting raw data: ', str(err)) except GetPricesException as err: print('Error parsing json: ', str(err))
Вывод данных происходит с помощью функции get_prices(). Механизм простой: формируется url для GET-запроса. Мосбиржа в ответ присылает json, из которого забираются нужные данные и выводятся на экран.
Есть и другие способы получения данных: yfinance, pandas-datareader и универсальный BeautifulSoup, ещё более универсальный Selenium. Но это уже совсем другая история...