Любой сайт в интернете можно открыть нет только в виде удобной страницы с графикой и отформатированным текстом, но и в формате 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. Инструмент будет использоваться для более сложных задач, например, скрипт будет нажимать на кнопки и ожидать появления определенных элементов.