При выполнении задач парсинга веб-страниц с помощью стандартного объекта HTTPСоединение мы часто сталкиваемся с тем, что получаем лишь начальный HTML-код. Современные сайты активно используют JavaScript для подгрузки контента, поэтому «сырой» ответ сервера не содержит необходимых нам данных. Давайте разберем, как мы можем решить эту задачу, используя встроенные возможности платформы 1С и дополнительные инструменты автоматизации.
Одним из доступных нам способов работы с динамическими страницами внутри конфигурации является объект Поле HTML документа. В отличие от простого получения текста через HTTPСоединение, этот элемент управления работает как полноценный движок браузера, который выполняет скрипты и отрисовывает блоки.
Рассмотрим по шагам, как настроить работу с ним:
Строка.Поле HTML документа.После этого мы можем передавать HTML-код в данное поле. Однако важно учитывать, что этот метод лучше всего подходит для отображения контента или выполнения простых скриптов. Если нам нужно передать данные, например, изображения, их необходимо предварительно обработать. Рассмотрим пример, как подготовить данные, если они содержат картинки:
// Пример подготовки строки для Поля HTML документа
// Перегоняем картинку в Base64
КартинкаВBase64 = ПреобразоватьКартинкуВBase64(ДвоичныеДанныеКартинки);
СтрокаHTML = СтрЗаменить(ИсходныйHTML, "путь_к_картинке", КартинкаВBase64);
// Присваиваем результат полю на форме
Элементы.ИмяНужногоПоля.Документ.body.innerHTML = СтрокаHTML;
HTTPСоединение не всегда достаточно?Когда мы используем HTTPСоединение, мы работаем с протоколом передачи данных на низком уровне. Мы получаем лишь строку ответа сервера. Если логика сайта построена на том, что контент «дорисовывается» в браузере клиента после получения ответа, HTTPСоединение это не увидит. Для таких целей мы должны использовать методы эмуляции действий пользователя.
Если функционала Поле HTML документа недостаточно, мы можем прибегнуть к более мощным инструментам. Рассмотрим профессиональные подходы, которые мы можем внедрить в наши системы:
Network, мы сможем найти конкретный URL, к которому обращается скрипт. В таком случае мы сможем обращаться к этому API напрямую из 1С, получая чистый JSON, что гораздо быстрее и надежнее.ЗапуститьПриложение и считывать результат из временного файла.Puppeteer или аналогичных решений позволяет выполнять парсинг без графического интерфейса. Это экономит ресурсы сервера и позволяет стабильно обрабатывать сложные современные сайты на фреймворках вроде React или Vue.При выборе метода работы мы должны учитывать сложность сайта:
HTTPСоединение.Поле HTML документа.Selenium или Playwright.Таким образом, мы видим, что задача получения данных с динамических сайтов решается комплексно. Начинайте всегда с анализа сетевого трафика — зачастую прямая работа с API сервера заменяет необходимость эмуляции работы целого браузера.