Как парсить HTML страницы в 1С

1с и web разработка

Обращение к HTML странице и получение ее содержания в виде текста достаточно простое.
Для дальнейшего обращения к ее элементам нам надо привести страницу в какую-нибудь логическую структуру.
Такой структурой в 1С является ДокументDOM. Давайте посмотрим как нам получить ответ и сделать это нехитрое преобразование.

Чтобы парсить HTML страницы нам нужна функция, которая избавит нас от мучительного поиска нужных нам элементов.
Эта функция должна выбирать элементы по типу того, как это делает jQuery (с помощью селекторов).
Если коротко — HTML разметка имеет элементы, которые в свою очередь имеют классы и/или идентификаторы.

 

Селекторы

Пример селектора: #content > div.row.mb-3 > div:nth-child(2) > div.price > div:nth-child(1)
Что описано в этом селекторе?

  1. Найти элемент с идентификатором «content»
  2. Среди дочерних элементов найти элемент с именем div, который имеет классы «row» и «mb-3»
    Тут немного поясню. Символ «>» означает, что надо искать среди дочерних элементов без поиска по подчиненным. Если бы вместо него стоял пробел — то поиск был бы среди дочерних элементов с поиском по всем подчиненным элементам. С точки начинается класс элемента. Т.е. на втором шаге мы ищем подобную конструкцию <div class=»row mb-3″>
  3. Ищем элемент div и выбираем среди найденных второй. nth-child(2) — псевдокласс, который и говорит о том, что нужно выбрать второй элемент. Так же в моей функции есть псевдоклассы first и last. Первый и последний среди найденных соответственно. Псевдоклассов много у jQuery, но в моей функции их только три.
  4. Ищем элемент div с классом price
  5. Ищем элемент div и выбираем первый элемент среди найденных.

В ответ мы получаем массив узлов. В случае с селектором из примера мы получим массив с одним html элементом.
Затем мы можем получить у этих элементов ТекстовоеСодержимое, Гиперссылку (для элементов <a>) или Источник (для элементов <img>)

Пришло время показать саму функцию, а точнее несколько маленьких функций, которые позволяют нам обращаться к элементам дерева DOM по аналогии с jQuery селекторами

И конечный код получения ответа, преобразования и поиска нужного элемента выглядит так:

Готовую обработку с примером использования можете скачать в моем телеграм канале

Такие же селекторы возвращает нам google chrome. Для этого нужно открыть инструменты разработчика (F12) и по шагам:

  1. Выбрать инструмент выбора элементов.
  2. Выбрать элемент на странице.
  3. Нажать правой кнопкой мыши на элементе в дереве элементов.
  4. Скопировать селектор

В итоге google chrome нам скопирует в буфер как раз наш селектор из примера: #content > div.row.mb-3 > div:nth-child(2) > div.price > div:nth-child(1)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *