Михаил Шардин
Михаил Шардин личный блог
09 сентября 2025, 04:14

Автообновляемые котировки в 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 я подробнее разберу технические детали, покажу живые примеры и отвечу на ваши вопросы.


Буду рад видеть всех, кто интересуется автоматизацией и новыми подходами в работе с финансовыми данными.
До встречи!
48 Комментариев
  • Whalerman
    09 сентября 2025, 07:40
    Михаил, спасибо! Хорошие и полезные посты!
  • Дмитрий Мамедиев
    09 сентября 2025, 07:45
    вообще то можно. создать подключение , вставляем ссылку и всё. берём от сюда https://iss.moex.com/iss/reference/
    • Ирина Чернецова
      09 сентября 2025, 15:44
      Дмитрий Мамедиев, а можно для совсем несведущего человека: как будет выглядеть ссылка в формуле WEBSERVICE в Excel для тикера, скажем, SBERP, если надо при открытии файла получить текущую котировку с Мосбиржи? А по облигациям по ISIN работает аналогично?

      То, что Михаил пишет, для меня слишком сложно 
    • Дмитрий
      09 сентября 2025, 22:18
      Дмитрий Мамедиев, тоже присоединяюсь к просьбе Ирины выше.
      Не проиллюстрируете на конкретном примере для нас, учащихся лишь в советских школах и никак не знакомых ни с питонами, ни с програмированием?
    • algomrk
      14 сентября 2025, 14:59
      Дмитрий Мамедиев, лучше не надо, оттуда инфу бесплатно запрещено использовать даже в личной торговле:

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

    А сколько вас там в банде?
  • Дмитрий-сан
    09 сентября 2025, 20:22
    10 лет назад был сайт h25.ru, на котором были котировки акций с МосБиржи. 
    Там можно было настроить три списка: текущий портфель, акции, за которыми присматриваю, и третий список — на выбор. 
    Настроив текущий портфель, можно было обращаться к нему из Excel. 
    Потом автор забросил сайт и теперь приходится городить вот такую городулю как в посте. 
  • nekto
    10 сентября 2025, 13:49
    Добрый день, Михаил! Перестал работать API Мосбиржи (получения котировок) в Excel. Это временно или что-то поменялось?
      • nekto
        10 сентября 2025, 14:05
        Михаил Шардин, Спасибо,- успокоил :)
        Я спохватился в понедельник (08.09). Раньше вроде как не замечал. Жалко будет наработанных табличек, если у них что-то поменяется в политике.
          • nekto
            12 сентября 2025, 14:03
            Михаил Шардин, почему-то инет молчит. Вижу, что некоторые сайты, показывающие текущие котировки, имели проблему, но уже устранили её. Как, всё-таки, проверить, работает или нет тот вариант, что был описан в Ваших статьях?
              • nekto
                13 сентября 2025, 14:36
                Михаил Шардин, ну тогда не понимаю.
                Беру Ваш демо с
                t-j.ru/media/t-zh_kotirovki-liuboi-bumagi-v-excel.kbveee1m6yil..xlsm

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

                  • nekto
                    13 сентября 2025, 19:21
                    Михаил Шардин, Спасибо за содействие!
                    Windows 7, Excel 2016. Всё старое, ничего не менялось и работало очень давно (кроме установки Касперского). Что могло произойти,- не понимаю.
                    В безопасности стояло «запрос на подключение данных». Но даже «включить все подключения к данным» ничего не меняет.
                    Попробую на другом компе.
                      • nekto
                        14 сентября 2025, 11:57
                        Михаил Шардин, У меня больше десятка разных таблиц с разными формулами. И все они одновременно перестали работать. Безопасность вроде как пересмотрел.
                        Вчера перенёс табличку с Вашим демо (старый правда, но нового у меня нет) на другой ноутбук. Результат тот же.
                        На безопасность из интернета может влиять Касперский. Но просто остановка защиты ничего не меняет.
                        Остаётся переустановка Excel и полное удаление Касперского.
              • SupTrade
                18 сентября 2025, 16:41
                Михаил Шардин, добрый день! Подскажите пожалуйста, почему LQDT выдает некорректную котировку, еще MSRS. странно. Смотрю страницу, куда обращается эксель, там корректно, а в Эксель

                встает нереальное значение. Спасибо.
  • Ho_Chu
    10 сентября 2025, 14:06
    А нельзя ли писать ещё более подробно? Для тех, кто сложнее экселя ничего не умеет?)) 
      • Ho_Chu
        10 сентября 2025, 23:43
        Михаил Шардин, а попробуйте, чего бояться то, если это может расширить круг читателей
  • Владимир Тимошенко
    16 сентября 2025, 02:12
    Можно еще сделать лаконичнее: обернуть все в докер образ, чтобы не устанавливать на комп много всякого лишнего. Еще можно реализовать скрипт через Yandex cloud serverless function, там есть бесплатный порог выполнения функций, да и веб можно там же поднять.
  • Дмитрий Мамедиев
    17 сентября 2025, 18:01
    algomrk, во первых можете зарегистрироваться и пользоваться так же, во вторых я ознакомил человека с возможностью а как он это будет использовать это не мое дело. Я же использую для построения графика отчётности, я же написал tqbr тариф за вчера, как можно это использовать сегодня я не знаю
  • YaroslavN
    21 сентября 2025, 08:59
    Михаил, спасибо!
    Очень интересно.
    Поставил себе Ваш тестовый пример. Всё заработало.
    Я теперь счастливый обладатель актуального курса 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/»
    не пояснено. Хотя задача далеко не тривиальная.
    Не подскажите, как надо действовать?

    Спасибо.
  • YaroslavN
    21 сентября 2025, 11:52
    Эту картинку у себя на компе повторил в DevTools.
    Теперь попробую из неё получить желаемое.
    Михаил, большое спасибо.

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

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

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

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

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

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

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн