Как собрать данные с разных страниц в Excel: от ручного ввода до автоматизации

Сбор данных с веб-страниц в Excel — задача, с которой сталкиваются аналитики, маркетологи и исследователи. Нужно ли вам собрать цены с маркетплейсов, контакты компаний с корпоративных сайтов или статистику с новостных порталов — вручную это делать неэффективно. К счастью, Microsoft Excel предлагает инструменты для автоматизации процесса: от простого копирования до сложных скриптов на VBA.

Но как выбрать подходящий метод? Если данных мало (до 50 строк), достаточно ручного ввода или функции IMPORTHTML в Google Sheets. Для средних объёмов (100–1000 строк) подойдёт Power Query — встроенный инструмент Excel для импорта и трансформации данных. А для массового парсинга (тысячи страниц) потребуются специализированные сервисы вроде ParseHub или самописные скрипты на Python с библиотекой BeautifulSoup. В этой статье разберём все варианты — от простых к сложным.

Важно понимать: не все данные можно легально собирать. Некоторые сайты запрещают парсинг в своих robots.txt или Terms of Service. Прежде чем приступать, проверьте правила ресурса — это убережёт от блокировки IP или юридических проблем. Также учитывайте нагрузку на сервер: слишком частые запросы могут привести к бану.

1. Ручной сбор данных: когда это оправдано

Ручное копирование данных в Excel актуально в трёх случаях: когда информации мало (до 20–30 строк), когда структура страницы слишком сложная для автоматического парсинга, или когда сайт активно блокирует ботов. Например, если вам нужно собрать контакты 10 поставщиков с корпоративных сайтов, проще сделать это вручную, чем настраивать скрипт.

Для ускорения процесса используйте горячие клавиши:

  • 🔹 Ctrl+C / Ctrl+V — копирование и вставка;
  • 🔹 Ctrl+Shift+L — включение фильтра в Excel (после вставки данных);
  • 🔹 Alt+H→O→I — вызов меню Текст по столбцам для разделения скопированного текста.

Если данные на странице представлены в виде таблицы, скопируйте её целиком: выделите ячейки мышью, нажмите Ctrl+C, затем вставьте в Excel через Специальная вставка → Текст. Это сохранит структуру. Для не табличных данных (например, списков с описаниями) придётся вручную распределять информацию по столбцам.

⚠️ Внимание: При ручном копировании из браузера в Excel иногда попадают скрытые символы (например, неразрывные пробелы  ). Чтобы их удалить, используйте функцию =ПЕЧСИМВ(A1) или найдите-замените через Ctrl+H (в поле "Найти" вставьте символ из буфера обмена).
📊 Как часто вы собираете данные с сайтов в Excel?
Ежедневно
Раз в неделю
Раз в месяц
Реже
Никогда

2. Импорт данных через Power Query (самый универсальный способ)

Power Query — встроенный инструмент Excel (доступен с версии 2016), который позволяет импортировать данные с веб-страниц, баз данных, JSON и других источников. Его главное преимущество — возможность трансформации данных до загрузки в таблицу: очистка, фильтрация, объединение столбцов.

Чтобы импортировать данные с сайта:

  1. Перейдите на вкладку Данные → Получить данные → Из других источников → Из веб.
  2. Вставьте URL страницы (например, https://example.com/prices) и нажмите OK.
  3. В открывшемся окне выберите таблицу (Power Query покажет все найденные на странице таблицы). Если таблицы нет, переключитесь на режим Веб-документ и вручную укажите путь к данным.
  4. Нажмите Трансформировать данные, чтобы открыть редактор Power Query. Здесь можно удалить лишние столбцы, заменить значения, разделить текст.
  5. После обработки нажмите Закрыть и загрузить — данные появятся на новом листе Excel.

Power Query поддерживает обновление данных: если информация на сайте изменилась, достаточно нажать Данные → Обновить все. Это актуально для регулярного мониторинга (например, курсов валют или цен на товары).

Убедиться, что данные на странице структурированы (таблица, список с чёткими разделителями)|

Проверьте, не блокирует ли сайт запросы (откройте страницу в браузере в режиме инкогнито)|

Подготовьте шаблон Excel с названиями столбцов для импорта|

Отключите блокировщики рекламы (они могут мешать загрузке данных)-->

Метод сбора Сложность Макс. объём данных Подходит для
Ручной ввод до 50 строк Разовые задачи, небольшие объёмы
Power Query ⭐⭐ до 10 000 строк Регулярный импорт, структурированные данные
VBA-скрипты ⭐⭐⭐ до 100 000 строк Сложные задачи, динамические страницы
Спец. сервисы (ParseHub) ⭐⭐⭐⭐ неограничено Массовый парсинг, обход защиты

3. Автоматизация через VBA: для опытных пользователей

Если Power Query не справляется (например, данные загружаются динамически через JavaScript), можно написать макрос на VBA. Этот метод требует знаний программирования, но даёт полный контроль над процессом. Например, так можно собирать данные с сайтов, где требуется авторизация или взаимодействие с элементами страницы.

Пример скрипта для парсинга заголовков с страницы:

Sub ParseWebData()

Dim http As New MSXML2.XMLHTTP60

Dim html As New HTMLDocument

Dim titles As IHTMLElementCollection

Dim i As Integer

' URL страницы

Dim url As String: url = "https://example.com/news"

' Запрос к странице

http.Open "GET", url, False

http.send

' Парсинг HTML

html.body.innerHTML = http.responseText

Set titles = html.getElementsByClassName("title") ' класс заголовков

' Запись в Excel

For i = 0 To titles.Length - 1

Sheets("Data").Cells(i + 1, 1).Value = titles(i).innerText

Next i

End Sub

Чтобы этот код заработал:

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. В меню выберите Tools → References и подключите библиотеки Microsoft XML, v6.0 и Microsoft HTML Object Library.
  3. Вставьте код в новый модуль и запустите через F5.
⚠️ Внимание: Многие сайты блокируют запросы без заголовков User-Agent. В VBA их можно эмулировать, добавив строку:
http.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"

Но это не гарантирует обход всех защит. Для сложных случаев используйте Selenium или прокси.

4. Использование Google Sheets для парсинга (IMPORT-функции)

Если вы работаете в Google Таблицах, для сбора данных можно использовать встроенные функции:

  • 📊 =IMPORTHTML(URL; "table"; 1) — импорт HTML-таблицы с страницы;
  • 📊 =IMPORTXML(URL; "//h2") — импорт данных по XPath-запросу;
  • 📊 =IMPORTDATA(URL) — для CSV-файлов.

Пример: чтобы собрать таблицу курсов валют с сайта Центробанка, используйте:

=IMPORTHTML("https://www.cbr.ru/currency_base/daily/"; "table"; 1)

Функция автоматически обновляет данные при открытии файла.

Ограничения метода:

  • 🚫 Не работает с динамически загружаемыми данными (AJAX, JavaScript);
  • 🚫 Максимум 50 импортов на файл;
  • 🚫 Некоторые сайты блокируют запросы от Google (ответ #N/A).
Как обойти блокировку IMPORT-функций?

Если Google Sheets выдаёт ошибку #N/A, попробуйте:

1. Использовать прокси-сервер в URL (например, =IMPORTDATA("https://api.allorigins.win/get?url=ЗАКОДИРОВАННЫЙ_URL")).

2. Экспортировать данные в CSV и загружать через IMPORTDATA.

3. Переключиться на Power Query в Excel (он реже блокируется).

5. Специализированные сервисы для парсинга

Для массового сбора данных (тысячи страниц) ручные методы не подходят. В таких случаях используют специализированные инструменты:

  • 🛠️ ParseHub — визуальный конструктор для парсинга без кода;
  • 🛠️ Octoparse — поддерживает облачный парсинг и расписание;
  • 🛠️ Apify — платформа для создания парсеров на JavaScript;
  • 🛠️ Scrapy (Python) — для разработчиков, поддерживает прокси и CAPTCHA.

Преимущества сервисов: Они автоматически обходят простые защиты (например, изменяют User-Agent, используют прокси, эмулируют поведение пользователя), что снижает риск блокировки.

Кроме того, многие из них предлагают облачное хранилище для собранных данных и интеграцию с Excel через API или экспорт в CSV.

Пример работы с ParseHub:

  1. Установите расширение для браузера.
  2. Откройте целевую страницу и запустите ParseHub.
  3. Выделите мышью элементы, которые нужно собрать (например, все цены на странице).
  4. Настройте пагинацию (переход по страницам "Следующая").
  5. Запустите сбор и экспортируйте результат в Excel.
⚠️ Внимание: Бесплатные тарифы сервисов ограничивают количество запросов (например, 200 страниц в месяц в ParseHub). Для крупных проектов потребуется платная подписка (от $100/месяц). Также проверяйте лицензионные соглашения сайтов — некоторые запрещают автоматизированный сбор даже через легальные инструменты.

6. Обработка и очистка собранных данных

После сбора данные редко бывают готовы к анализу. Частые проблемы:

  • 🧹 Лишние символы: знаки валют, пробелы, HTML-теги;
  • 🧹 Некорректные форматы: даты в виде строк, числа с разделителями;
  • 🧹 Дубликаты: повторяющиеся записи из-за ошибок парсинга;
  • 🧹 Пустые ячейки: пропущенные значения.

Инструменты для очистки в Excel:

Проблема Решение Формула/Инструмент
Лишние пробелы Удаление начальных/конечных пробелов =СЖПРОБЕЛЫ(A1)
HTML-теги Удаление всех тегов =ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;"<*>"؛"");CHAR(10);" ") + регулярные выражения
Некорректные даты Преобразование в формат Excel =ДАТАЗНАЧ(ПОДСТАВИТЬ(A1;".";"/"))
Дубликаты Удаление повторов Данные → Удалить дубликаты

Для сложных случаев (например, извлечение чисел из строк) используйте Power Query:

  1. Загрузите данные в Power Query (Данные → Из таблицы/диапазона).
  2. Выделите столбец, выберите Преобразовать → Извлечь → Текст до/после разделителя.
  3. Для чисел используйте Преобразовать → Формат → Число.

7. Автоматизация обновления данных

Если данные на сайте обновляются регулярно (например, курсы валют или котировки акций), настройте автоматическое обновление в Excel:

  • 🔄 Для Power Query: Данные → Свойства → Обновить каждые X минут;
  • 🔄 Для VBA: добавьте в код таймер или привяжите макрос к событию (например, открытию файла);
  • 🔄 Для Google Sheets: используйте =IMPORTHTML с триггером на время (Редактор скриптов → Триггеры).

Пример VBA-кода для обновления при открытии файла:

Private Sub Workbook_Open()

Sheets("Data").QueryTables(1).Refresh

End Sub

Для облачной автоматизации подойдут сервисы вроде Zapier или Make (ex-Integromat). Они позволяют связать парсинг с Excel через API. Например, можно настроить цепочку: ParseHub → Google Sheets → Excel, где данные будут обновляться по расписанию.

FAQ: Частые вопросы по сбору данных в Excel

Можно ли собирать данные с сайтов, где есть CAPTCHA?

Обойти CAPTCHA вручную или через Power Query невозможно. Варианты решения:

  • Использовать сервисы вроде 2Captcha или Anti-Captcha (платные);
  • Настроить парсинг через Selenium с эмуляцией действий пользователя;
  • Обратиться к владельцу сайта за доступом к API.

Обратите внимание: обход CAPTCHA может нарушать правила сайта.

Как собрать данные с сайта, где требуется авторизация?

Для авторизованного доступа:

  1. В Power Query используйте параметр RelativePath с куками сессии;
  2. В VBA добавьте заголовки авторизации:
    http.setRequestHeader "Cookie", "session_id=ВАШ_ID"
  3. В специализированных сервисах (например, ParseHub) настройте шаги логина.

⚠️ Хранение логинов/паролей в коде VBA небезопасно. Используйте переменные окружения или защищённые файлы.

Почему Power Query не видит таблицу на странице?

Возможные причины:

  • Таблица сформирована через JavaScript (Power Query видит только статический HTML);
  • Сайт блокирует запросы без заголовков (добавьте User-Agent в параметры запроса);
  • Данные загружаются через AJAX — попробуйте найти прямой URL к API (обычно содержит /api/ или /data/).

Решение: откройте инструменты разработчика в браузере (F12), перейдите на вкладку Network и найдите запрос, который возвращает нужные данные. Скопируйте его URL и используйте в Power Query.

Как собрать данные с нескольких страниц одновременно?

Способы параллельного сбора:

  • В Power Query: создайте отдельные запросы для каждой страницы, затем объедините их через Добавить запрос → Объединить;
  • В VBA: используйте цикл For Each для перебора URL;
  • В ParseHub: настройте пагинацию в проекте.

Пример VBA для перебора страниц:

For page = 1 To 10

url = "https://example.com/page?" & page

' Код парсинга для каждого URL

Next page

Можно ли собирать данные с социальных сетей (VK, Instagram)?

Сбор данных с соцсетей ограничен их правилами:

  • VK: официально разрешает парсинг публичных данных через VK API (требуется токен);
  • Instagram: запрещает парсинг без согласия (используйте Instagram Graph API для бизнес-аккаунтов);
  • Facebook: требует разрешения на доступ к данным.

Риски: блокировка аккаунта или IP. Для легального сбора используйте официальные API или сервисы вроде Brandwatch, Hootsuite.