Document Object Model (объектная модель документа)

Любой сайт в интернете можно открыть нет только в виде удобной страницы с графикой и отформатированным текстом, но и в формате HTML, когда содержимое представлено в виде обычного текста. Именно из такого кода извлекают необходимую информацию при парсинге.

Разберемся в основных понятиях.

DOM (Document Object Model) – набор правил, который обеспечивает формирование конкретной страницы при помощи исходного HHML-кода. Именно DOM хранит древовидную структуру сайта, а также данные в тегах.

Каждый элемента такого дерева принято называть узлом. Теоретически такие узлы могут иметь любую вложенность, ограничения не предусмотрены. Однако по очевидным причинам не рекомендуется делать значительную вложенность – это замедляет генерацию страницы и усложняет работу с кодом.

Для лучшего понимания ситуации вложенность тегов HTML можно сравнить с деревом обычных каталогов на ПК. Ключевое отличие, у каждого DOM-узда есть собственное название, атрибуты и специфические функции. К примеру, тег <title></title> позволяет указать обозревателю, какое название у текущей страницы, как обрабатывать данный тег и какие атрибуты для него доступны.

Пример простой HTML-страницы:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8"> 
    <title>Интернет-магазин</title>
    <style>
      /* CSS для оформления карточки товара */
      .product-card {
        border: 1px solid #ccc;
        padding: 15px;
        width: 300px;
      }
      .product-title {
        font-size: 1.2em;
      }
      .product-price {
        color: #e44d26;
      }
    </style>
  </head>
  <body>
    <h1>Каталог товаров</h1>
    
    <!-- Карточка товара -->
    <div class="product-card" id="product-1">
      <h2 class="product-title">Название товара</h2>
      <img src="product-image.jpg" alt="Изображение товара" width="100">
      <p class="product-description">Описание товара, которое подробно расскажет о его характеристиках.</p>
      <p class="product-price">Цена: 1000 руб.</p>
      <button type="button" onclick="addToCart('product-1')">Добавить в корзину</button>
    </div>

  </body>
</html>

Тег <title> указывает, какое название у данной страницы (отображается во вкладке браузера).

Блок <style> предназначен для указания правил CSS, используемых для оформления карточки товара. Для более сложных страниц стили принято выносить в отдельный файл.

Карточка товара заключена в тег <div> с классом product-card и идентификатором id=»product-1″.

<h2> в данном случае используется для указания названия товара, используется класс product-title.

<p> с классом product-description и product-price позволяет вывести описание и цену текущего товара.

Тег <img> используется для вывода фото товара, атрибуты src и alt позволяют указать путь к графическому файлу и альтернативный текст соответственно.

Кнопка «Добавить в корзину» генерируется при помощи тега <button>, атрибут onclick обеспечивает запуск указанного скрипта.

Каждый из тегов в данном примере представляет собой отдельный узел в DOM. Такие узлы могут иметь произвольные атрибуты и включать вложенные узлы.

Понимание используемой структуры важно для поиска нужного элемента на анализируемой странице, например, для извлечения или взаимодействия. В процессе создания парсера от пользователя не требуется вносить изменения в HTML, задача стоит именно получить доступ к узлу или его параметрам.

Исключение в рамках данного курса относится только к работе с Selenium WebDriver. Инструмент будет использоваться для более сложных задач, например, скрипт будет нажимать на кнопки и ожидать появления определенных элементов.



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

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: