Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

VBA Excel. Парсинг содержимого HTML-тегов

    Парсинг содержимого HTML-тегов со страницы сайта в VBA Excel на примере заголовка 2 уровня. Запись извлечённой информации в ячейки рабочего листа.

    С помощью VBA Excel можно выполнять веб-запросы и извлекать содержимое определённых HTML-тегов с веб-страниц. Ниже представлен пример парсинга данных из тегов <h2>, которые обычно используются как основные заголовки внутри статей.

    Подготовка среды

    Прежде чем приступить к написанию кода, необходимо подключить библиотеки, необходимые для работы с HTML и HTTP-запросами:

    1. Откройте редактор VBA (нажмите Alt + F11).
    2. Перейдите в меню Tools → References.
    3. Установите флажки напротив следующих библиотек:
      • Microsoft HTML Object Library (для работы с HTML).
      • Microsoft XML, v6.0 (для отправки HTTP-запросов).
    4. Нажмите OK для подтверждения.

    Код для парсинга

    Ниже приведён готовый пример кода, который загружает страницу, находит все теги <h2> и записывает их содержимое в ячейки рабочего листа Excel:

    Как это работает

    1. Инициализация:
      • Объект http создается для отправки запроса.
      • Объект html используется для парсинга HTML-кода.
    2. Запрос к сайту:
      • Указываем URL страницы сайта в переменной url.
      • Отправляем HTTP-запрос методом GET.
    3. Парсинг данных:
      • Если получен код ответа 200 (успешный запрос), содержимое страницы загружается в HTML-документ (переменная html).
      • Метод getElementsByTagName("h2") извлекает содержимое всех тегов <h2> в HTML-документе.
    4. Вывод в Excel:
      • Содержимое каждого тега <h2> записывается в столбец A, начиная с первой строки.
    5. Обработка ошибок:
      • Если страница не загрузилась, выводится сообщение с кодом ошибки.

    Примечания

    • Если содержимое тегов <h2> формируется с помощью JavaScript на стороне клиента, данный метод не сработает, так как XMLHTTP видит только исходный HTML.
    • В случае проблем с отображением символов (например, кириллицы) может потребоваться дополнительная перекодировка текста. Для указанного в примере сайта таких проблем не возникало.
    • Чтобы спарсить содержимое других HTML-тегов, замените "h2" на нужный тег в строке:

      Например на: "p", "ol", "ul", "a", "span".

    С помощью кода на VBA вы можете быстро собрать заголовки или другие текстовые элементы со страницы сайта и отобразить их в таблице Excel. Это удобный способ автоматизировать сбор контента без использования сторонних парсеров и браузеров.


    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.