Блог им. empenoso

Автообновляемые котировки в Excel: современный способ брать данные на примере investing.com

Многие частные инвесторы ведут свои портфели в Excel: это удобно, бесплатно и всё — на вашем компьютере. Но у Excel есть слабое место: он не умеет напрямую «разговаривать» с современными сайтами. Если нужно автоматически подтянуть котировку с конкретной страницы в интернете, встроенные веб‑функции часто не справляются: они не умеют обходить современные защиты.

Автообновляемые котировки в Excel: современный способ брать данные на примере investing.com

В этой статье я покажу простой и надёжный способ заставить Excel получать котировки практически с любого сайта — на примере курса USD/RUB с investing.com. Идея не требует глубоких технических знаний: вместо того чтобы пытаться что-то делать со страницей в Excel, мы используем на своём компьютере небольшой скрипт‑посредник. Excel просто запрашивает у него одно число, а посредник уже «ходит» на сайт, берёт данные, при необходимости обрабатывает их и возвращает в понятном для Excel виде.

Короткая схема работы:

┌───────────────────┐      ┌──────────────────────┐      ┌──────────────────┐
│ 1. <a name="cut"></a>  Excel (формула)│─ ─ ─>│ 2. Локальный сервер  │─ ─ ─>│ 3. Сайт-источник │
│ (простой запрос)  │      │  (Excel Data Bridge) │      │  (investing.com) │
└───────────────────┘      └────────┬─────────────┘      └─────────┬────────┘
        ▲                           │                              │
        │                           │ (обрабатывает данные)        │ (получает "сырые"
        └───────────────────────────┴──────────────────────────────┘       данные)
                    (возвращает готовый результат)
Автообновляемые котировки в Excel: современный способ брать данные на примере investing.com

Приведённый далее Python‑скрипт (набор инструкций для этого «посредника») — это учебный пример: он предназначен исключительно для демонстрации принципа работы с API и веб‑технологиями. Я не призываю и не рекомендую использовать его для обхода правил каких‑либо сайтов.

Все исходные файлы проекта доступны в репозитории на GitHub.

Почему Excel «из коробки» больше не справляется?

Раньше сайты были простыми — статический HTML, и достаточно было послать GET‑запрос (когда вы вводите адрес сайта в браузере и нажимаете Enter, ваш браузер отправляет GET‑запрос) и прочитать нужный кусок страницы. Сегодня веб — это чаще не страницы, а полноценные приложения: данные подгружаются отдельно через JavaScript, содержимое формируется в браузере и может отсутствовать в исходном HTML. Простая формула Excel этого не видит — она получает «скелет» страницы, а не финальный контент.

Автообновляемые котировки в Excel: современный способ брать данные на примере investing.com

Плюс появились надёжные системы защиты: Cloudflare и их аналоги анализируют трафик и блокируют подозрительные запросы. Запрос из Excel выглядит «механически» — без cookie, без поведенческих отпечатков, без выполнения JS — и его часто сразу отбрасывают или ставят на проверку CAPTCHA.

Нам нужен инструмент, который умеет вести себя как настоящий браузер: выполнять JS, держать сессию, ставить нужные заголовки. Именно таким инструментом станет локальный скрипт‑посредник — он «ходит» на сайт как человек/браузер, получает чистые числа и возвращает их Excel в простом виде.

Архитектура нашего решения: строим мост между Excel и вебом

Excel — наш «заказчик». Он делает простой запрос к локальному адресу http://localhost:8000/usd_rub/rate и получает готовое значение. Ему не нужно знать про JavaScript, сессии или CAPTCHA — только чистый текст или XML для ячейки.

Автообновляемые котировки в Excel: современный способ брать данные на примере investing.com

Python + FastAPI — «умный посредник». Лёгкий локальный сервер принимает запрос от Excel, применяет стратегию получения данных, обрабатывает ответ и отдаёт результат в удобном формате. FastAPI даёт быстрый и документированный интерфейс.

requests и cloudscraper — наши «вездеходы». requests надёжен для простых запросов; cloudscraper помогает обходить защиту Cloudflare, имитируя поведение браузера. Сначала пробуем простой запрос, при ошибке переключаемся на cloudscraper и возвращаем то, что Excel «съест».

Итог: прозрачный локальный мост, скрывающий сложности веба и возвращающий котировки в Excel.

Готовим рабочее место и Excel получает данные

Теперь переходим к самому интересному — практической реализации. Наша цель — запустить локальный сервер‑посредник и научить Excel обращаться к нему за данными. Следуйте этим шагам, и даже если вы никогда не работали с Python, у вас всё получится.

Автообновляемые котировки в Excel: современный способ брать данные на примере investing.comhttps://github.com/empenoso/excel-data-bridge

Шаг 1: Создание рабочего пространства

Для начала создайте на вашем компьютере отдельную папку, например, excel-data-bridge. В ней мы будем хранить все наши файлы. Это поможет избежать путаницы и обеспечит корректную работу скриптов.

Поместите в эту папку четыре файла, которые были предоставлены ранее:

        1. investing_proxy.py — наш основной скрипт‑посредник.

        1. requirements.txt — список необходимых Python‑библиотек.

        1. 1_install_requirements.bat — установщик зависимостей.

        1. 2_start_server.bat — запускатор нашего локального сервера.

Шаг 2: Установка необходимых компонентов

Автообновляемые котировки в Excel: современный способ брать данные на примере investing.com

Прежде чем наш скрипт сможет работать, ему нужны «помощники» — специальные библиотеки Python. Файл 1_install_requirements.bat сделает всю работу за вас.

Просто дважды кликните по файлу 1_install_requirements.bat. Откроется командная строка, где вы увидите процесс установки. Скрипт сначала проверит, установлен ли у вас Python, а затем скачает и установит все библиотеки из файла requirements.txt. По завершении вы увидите сообщение «Установка завершена!». Это означает, что всё готово к следующему шагу.

Шаг 3: Запуск локального сервера

Автообновляемые котировки в Excel: современный способ брать данные на примере investing.com

Теперь, когда все компоненты установлены, запустим наш сервер. Для этого дважды кликните по файлу 2_start_server.bat.

Снова откроется окно командной строки, но на этот раз оно не закроется. Вы увидите сообщения о запуске сервера, а также список доступных адресов (endpoints), по которым Excel сможет обращаться за данными. Пока это окно открыто, ваш сервер работает и готов принимать запросы от Excel. Если вы закроете это окно, сервер остановится.

Шаг 4: Получение данных в Excel

Автообновляемые котировки в Excel: современный способ брать данные на примере investing.com

Откройте Microsoft Excel и выберите любую ячейку. Теперь мы используем встроенную функцию ВЕБСЛУЖБА (WEBSERVICE), которая умеет делать запросы по указанному адресу.

        1. Чтобы получить курс USD/RUB, введите в ячейку следующую формулу и нажмите Enter: =ВЕБСЛУЖБА("http://localhost:8000/usd_rub/rate")

        1. Чтобы получить дату и время котировки, введите в соседнюю ячейку: =ВЕБСЛУЖБА("http://localhost:8000/usd_rub/datetime")

Excel отправит запрос на ваш локальный сервер, тот, в свою очередь, сходит на investing.com, получит данные и вернёт их в ячейку.

Автообновляемые котировки в Excel: современный способ брать данные на примере investing.com

Это просто пример — как можно модифицировать под себя?

Это лишь базовый пример, а не готовый универсальный инструмент. Скрипт показывает принцип: Excel делает простой запрос, а посредник достаёт данные с сайта и возвращает результат. Но у каждого инвестора свои задачи: кому‑то нужны котировки акций, кому‑то — нефть или золото, кто‑то захочет загружать таблицы. Именно поэтому код придётся адаптировать под конкретный сайт, формат ответа и даже частоту обновлений. Главное — вы держите в руках рабочий шаблон, который легко модифицировать под себя.

Заключение

Мы не просто решили локальную задачу получения котировок — мы освоили мощный подход к интеграции Excel с современным вебом. Создав локальный API‑посредник, мы научили старый добрый Excel говорить на языке современных веб‑приложений, обходя их защиты и получая актуальные данные.

Этот мост между Python и Excel открывает широкие возможности для автоматизации рутинных операций и делает ваш инвестиционный портфель по‑настоящему «живым» — с автообновляющимися котировками, курсами валют и любыми финансовыми данными из интернета.

Автор: Михаил Шардин

🔗 Моя онлайн‑визитка

📢 Telegram «Умный Дом Инвестора»

9 сентября 2025


Эта статья и представленный в ней инструмент — часть моего доклада на конференции для инвесторов и трейдеров Smart-Lab Conf 2025, которая пройдёт 25 октября в Москве.

На выступлении 25 октября в зале №7 (спекуляции) в 12:00 я подробнее разберу технические детали, покажу живые примеры и отвечу на ваши вопросы.


Буду рад видеть всех, кто интересуется автоматизацией и новыми подходами в работе с финансовыми данными.
До встречи!
11.1К | ★51
48 комментариев
Михаил, спасибо! Хорошие и полезные посты!
avatar
Whalerman, спасибо!
avatar
вообще то можно. создать подключение , вставляем ссылку и всё. берём от сюда https://iss.moex.com/iss/reference/
Дмитрий Мамедиев, я знаю, но это пример о другом — о том что можно получать любые данные практически с любых сайтов для личного использования
avatar
Дмитрий Мамедиев, а можно для совсем несведущего человека: как будет выглядеть ссылка в формуле WEBSERVICE в Excel для тикера, скажем, SBERP, если надо при открытии файла получить текущую котировку с Мосбиржи? А по облигациям по ISIN работает аналогично?

То, что Михаил пишет, для меня слишком сложно 
avatar
Ирина Чернецова, я в прошлом году на конференции рассказывал про это — найдите видео выступления
avatar
Дмитрий Мамедиев, тоже присоединяюсь к просьбе Ирины выше.
Не проиллюстрируете на конкретном примере для нас, учащихся лишь в советских школах и никак не знакомых ни с питонами, ни с програмированием?
avatar
Дмитрий, iss.moex.com/iss/engines/stock/markets/shares/boards/tqbr/securities/ABIO.xml?iss.meta=off&iss.only=securities&securities.columns=SHORTNAME,PREVPRICE
вместо ABIO ставите тикер своего эмитента. если убрать то выдаст всех акций. tqbr означает цену закрытия ВЧЕРА. убрать SHORTNAME,PREVPRICE выдаст всю информацию, но там много не нужной информации. надеюсь про excel не нужно рассказывать
Дмитрий Мамедиев, спасибо большое! Буду пробовать.
avatar
Дмитрий Мамедиев, лучше не надо, оттуда инфу бесплатно запрещено использовать даже в личной торговле:

«Полученная из ИСС информация доступна только для ознакомления, не может быть использована для извлечения прибыли, или иных (кроме ознакомления) действий, в т.ч. для оказания услуг по предоставлению этой информации или подготовленных на её основе материалов и данных, продуктов и сервисов третьим лицам. Любое использование информации (кроме ознакомления) возможно только по договору с ПАО Московская Биржа.
Подробнее на Московской бирже: www.moex.com/a2193»
avatar
Всё равно это костыли. Невозможно нашу ексельку запустить на любом компе или смартфоне. Ждём новую версию екселя где это пофиксят.
avatar
Божественный, можно не дождаться :(
avatar
Божественный, пока Эксель в чем-то тупит всегда будут костыли.
Но если он будет долго тупить, то вскоре станет не нужным.
Хотя бы для ведения портфеля.
avatar
DrManhattan, многие им пользуются. Эксель популярен до сих пор
avatar
DrManhattan, я уже несколько лет на либреофисе, проблем нет.
avatar
Божественный, да и заломать мелкотелых не проблема.
Только зачем тебе 1,000 функций, если используешь не больше 10.
avatar
Божественный, на либреофисе эта схема тоже будет работать
avatar
Мы не просто решили локальную задачу получения котировок 

А сколько вас там в банде?
avatar
DrManhattan, если из людей — то только я. Ещё компьютер 
avatar
10 лет назад был сайт h25.ru, на котором были котировки акций с МосБиржи. 
Там можно было настроить три списка: текущий портфель, акции, за которыми присматриваю, и третий список — на выбор. 
Настроив текущий портфель, можно было обращаться к нему из Excel. 
Потом автор забросил сайт и теперь приходится городить вот такую городулю как в посте. 
avatar
Дмитрий-сан, сайт до сих пор открывается. Ещё в 2021 году они собирались возобновить обновление котировок 🤷‍♂️
avatar
Добрый день, Михаил! Перестал работать API Мосбиржи (получения котировок) в Excel. Это временно или что-то поменялось?
avatar
nekto, у них периодически то ломается то снова работает. Недавно пользовался вроде всё работало
avatar
Михаил Шардин, Спасибо,- успокоил :)
Я спохватился в понедельник (08.09). Раньше вроде как не замечал. Жалко будет наработанных табличек, если у них что-то поменяется в политике.
avatar
nekto, другие разработаем. Дело наживное
avatar
Михаил Шардин, почему-то инет молчит. Вижу, что некоторые сайты, показывающие текущие котировки, имели проблему, но уже устранили её. Как, всё-таки, проверить, работает или нет тот вариант, что был описан в Ваших статьях?
avatar
nekto, всё работает потому что. Вот демо образец и он работает



avatar
Михаил Шардин, ну тогда не понимаю.
Беру Ваш демо с
t-j.ru/media/t-zh_kotirovki-liuboi-bumagi-v-excel.kbveee1m6yil..xlsm

ctrl+alt+f9 и получаю

avatar
nekto, статья начала 2024 года. А запросы ведь меняются. Но даже на базе старой статьи Вы можете разобраться и сделать работающую таблицу пример то ведь есть.
К тому же есть нюансы. У вас windows? Вы разрешили получение данных для файла через внешние источники?
avatar

nekto, настройки безопасности блокируют у Вас. Разбирайтесь.

В оригинальном файле до сих пор работает:



avatar
Михаил Шардин, Спасибо за содействие!
Windows 7, Excel 2016. Всё старое, ничего не менялось и работало очень давно (кроме установки Касперского). Что могло произойти,- не понимаю.
В безопасности стояло «запрос на подключение данных». Но даже «включить все подключения к данным» ничего не меняет.
Попробую на другом компе.
avatar
nekto, это что-то с политикой безопасности для файлов из интернета.

Но вы например можете просто скопировать вручную формулы в новый файл созданный на вашем компьютере
avatar
Михаил Шардин, У меня больше десятка разных таблиц с разными формулами. И все они одновременно перестали работать. Безопасность вроде как пересмотрел.
Вчера перенёс табличку с Вашим демо (старый правда, но нового у меня нет) на другой ноутбук. Результат тот же.
На безопасность из интернета может влиять Касперский. Но просто остановка защиты ничего не меняет.
Остаётся переустановка Excel и полное удаление Касперского.
avatar
nekto, Windows 7 в 2025 году — звучит само по себе небезопасно. Основная поддержка Windows 7 закончилась 13 января 2015 года.
avatar
Михаил Шардин, добрый день! Подскажите пожалуйста, почему LQDT выдает некорректную котировку, еще MSRS. странно. Смотрю страницу, куда обращается эксель, там корректно, а в Эксель

встает нереальное значение. Спасибо.
avatar
А нельзя ли писать ещё более подробно? Для тех, кто сложнее экселя ничего не умеет?)) 
avatar
Ho_Chu, я часто на хабре публикуюсь и там такой стиль боюсь не поймут
avatar
Михаил Шардин, а попробуйте, чего бояться то, если это может расширить круг читателей
avatar
Можно еще сделать лаконичнее: обернуть все в докер образ, чтобы не устанавливать на комп много всякого лишнего. Еще можно реализовать скрипт через Yandex cloud serverless function, там есть бесплатный порог выполнения функций, да и веб можно там же поднять.
Владимир Тимошенко, ооо, про докер образ я на следующей неделе опубликую — там тоже не всё так гладко
avatar
Михаил Шардин, отлично, жду)
algomrk, во первых можете зарегистрироваться и пользоваться так же, во вторых я ознакомил человека с возможностью а как он это будет использовать это не мое дело. Я же использую для построения графика отчётности, я же написал tqbr тариф за вчера, как можно это использовать сегодня я не знаю
Михаил, спасибо!
Очень интересно.
Поставил себе Ваш тестовый пример. Всё заработало.
Я теперь счастливый обладатель актуального курса USD с сайта www.investing.com/currencies/usd-rub.
Захотел перенести этот опыт на другой сайт, например отслеживать котировку ПИФа:
investfunds.ru/funds/113/.

Сразу обнаружился у меня пробел.
Курс на сайте www.investing.com/currencies/usd-rub я вижу. Этот url есть.
А вот как от него перейти к заданию в investing_proxy.py
url = «api.investing.com/api/financialdata/2186/historical/chart/»
не пояснено. Хотя задача далеко не тривиальная.
Не подскажите, как надо действовать?

Спасибо.
avatar

YaroslavN, самое удивительное что у investfunds.ru тоже есть скрытое АПИ. Может быть даже отдельный прокси сервер и не потребуется.

Это на отдельный мануал тянет. Но к сожалению такого не выйдет — публично про такое писать — не хочу получить юридические претензии...

А вот их разбор:




avatar
Эту картинку у себя на компе повторил в DevTools.
Теперь попробую из неё получить желаемое.
Михаил, большое спасибо.

Предыстория вопроса.
Я — физик. Время от времени закачиваю к себе прямо из Excel данные о ПИФах с сайта investfunds.ru/.
Начиная примерно с сентября первый запрос из «Query & Connections» не проходил, получал на каждый запрос: (503): Service TemporariIy UnavaiIable.
Нажимал «Refresh All» повторно, тогда данные в Excel закачивались.
С 14.09.2025 уже никакие запросы из Excel не проходят.
Пробовал вводить свои учётные данные для их сайта.
Всё равно не проходит, всё равно получаю (503): Service TemporariIy UnavaiIable.

Обратился в Поддержку Investfunds.
Описал ситуацию.
avatar
— Администратор Investfunds
Ярослав, добрый день! Дело не в учетной записи, а в настройках браузера (сайт действительно стал более защищенным, в том числе от парсинга).
Рекомендуем вам пользоваться возможностью скачивать данные в xls-формате.

Вопрос: возможно ли по-прежнему физику периодически закачивать данные с Вашего сайта к себе прямо в Excel файл? (Не пользуясь платными подписками).

— Администратор Investfunds
Ярослав, точно можно, мы не ограничивали/не закрывали доступ к сайту, все данные по-прежнему открытые и бесплатные.
Пока не получилось воспроизвести Вашу ошибку, за исключением случая, когда доступ происходит с зарубежного адреса и зарубежный провайдер блокирует сайт.

Доступ из России, из Петербурга. ВПН на компе не запущен.

Администратор Investfunds
мы не можем разбираться в тонкостях настройки получения данных непосредственно с помощью Excel, можем только Вас заверить, что данные никаким образом мы не закрывали и проблему, описанную Вами,
воспроизвести не можем
avatar

Читайте на SMART-LAB:
Фото
Газета «Коммерсант» выпустила тематическое приложение о страховом рынке
Много интересных материалов для тех, кто работает в отрасли и тех, кто так или иначе с ней связан. Полагаем, публикации могут быть интересны и...
Фото
🥳 В десяточку! Два выпуска на сумму более 10 млрд рублей
ГК «А101» завершила сбор книги заявок на два выпуска облигаций общим объемом 10,5 млрд рублей. Начало торгов состоится 26 декабря....
Фото
📈 Синара: целевая цена акций МГКЛ на конец 2026 года — 5,2 рубля
Ниже приводим краткое содержание мнения аналитиков. Инвестиционный банк Синара обновил прогноз по МГКЛ: оценочная капитализация ПАО...
Фото
Какая доходность среди облигаций с наивысшим рейтингом надежности и сроком погашения от 3 лет?

теги блога Михаил Шардин

....все тэги



UPDONW
Новый дизайн