Posted in

Методы получения и анализа содержимого веб-страницы по указанному URL

Методы получения и анализа содержимого веб-страницы по указанному URL

Подготовка и первичная проверка URL

Начальный этап анализа начинается с указания URL-адреса исследуемой страницы и выполнения сетевого запроса методом GET или HEAD. Первичные проверки включают поступивший HTTP-статус (например, 200, 301, 404), заголовок Content-Type (обычно text/html; charset=UTF-8) и время ответа в миллисекундах. Перед извлечением контента проверяется директива robots (по meta robots и заголовку X-Robots-Tag) и наличие rel=»canonical». При необходимости логируется цепочка редиректов и коды 3xx для восстановления конечного адреса.

В тексте запроса фиксируются параметры схемы (http/https), наличие query-параметров и фрагмента. При оценке сетевого слоя указывается версия TLS (обычно 1.2 или 1.3) и валидность сертификата по дате истечения.

Проверка доступности, статуса HTTP и редиректов

Проверка доступности включает повторный запрос с контрольными заголовками Accept и User-Agent, анализ заголовков Cache-Control и Set-Cookie, а также таймауты (обычно 5–30 секунд в зависимости от политики). Для редиректов фиксируются коды 301/302/307/308 и количество переходов; превышение 10 редиректов рассматривается как аномалия. Важный показатель — заголовок Content-Length и поддержка сжатия (Accept-Encoding: gzip, br). Дополнительно проверяется корректная доставка статических ресурсов (изображения, CSS, PDF), включая каталоги и прайс-листы, таких как Профлист для забора.

Определение ограничений: paywall, авторизация, динамика

Выявление ограничений включает анализ ответов сервера на неавторизованные и авторизованные запросы, проверку наличия форм логина или заглушек paywall и загруженности контента через XHR/Fetch. Для SPA проверяется наличие обфусцированных скриптов и initial-state в HTML, а также наличие данных, подготавливаемых на клиенте (динамические запросы к API, количество XHR-запросов и их ответы в формате JSON).

Извлечение и структура видимого контента

Основная цель — отделить основной текст от шаблонных блоков. Для этого применяется анализ DOM, вычисление плотности текста по узлам, обнаружение тегов article, main и role=»main» и удаление навигации и боковых панелей. В ходе выбирается title и description, фрагменты с H1–H6 для восстановления оглавления.

Алгоритм выделения основного текста и заголовков

Алгоритм включает парсинг HTML5-doctype, определение charset через , построение дерева DOM и оценку веса узлов по длине текста, ссылочной плотности и позициям тегов header/article. Заголовки H1–H6 фиксируются с указанием порядка и контекста в DOM; частота повторов и уровень вложенности используются для реконструкции иерархии разделов.

Работа с мультимедиа: изображения, видео, аудио

Изображения извлекаются по атрибутам src, srcset и sizes; фиксируются форматы (JPEG, PNG, WebP), значения width/height и alt-тексты. Видео и аудио анализируются по тегам video/audio и по iframe-встраиваниям; указывается источник, MIME-тип (например, video/mp4, video/webm) и наличие альтернативных дорожек. Отдельно фиксируются lazy-loading атрибуты и CDN-хосты.

Метаданные и формализованные описания

Метаданные включают title, meta name=»description», rel=»canonical», meta name=»robots» и Open Graph теги og:title, og:description, og:type и og:image. Эти элементы используются для определения типа страницы (Article, Product, Event, Landing) и краткого тематического описания.

Обзор meta-тегов, Open Graph и каноников

Проверяются дублирование title/description, длина title (обычно до 60 символов) и description (до 160 символов), а также корректность rel=»canonical» — он должен указывать предпочитаемую версию URL и содержать ту же схему и хост. Open Graph и Twitter Card фиксируются по наличию og: и twitter:meta.

Поиск и интерпретация JSON-LD, Microdata, RDFa

Структурированные данные ищутся в и в атрибутах itemtype/itemprop или RDFa. Проверяются контексты @context и @type (например, schema.org/Article, Person, Event). Из JSON-LD извлекаются поля headline, author, datePublished, image и offers, если присутствуют.

Технические проверки и безопасность

Технический аудит включает анализ подключаемых скриптов, доменов трекеров, наличие third-party-запросов и cookie с атрибутами HttpOnly, Secure и SameSite. Проверяется политика CORS и заголовки Content-Security-Policy. Фиксируются внешние редиректы и обращения к IP-адресам вместо DNS-имен.

Анализ скриптов, трекеров и cookie

Анализируется список , количество уникальных внешних хостов и цели скриптов (аналитика, реклама, виджеты). Отслеживаются запросы к популярным аналитическим эндпоинтам и наличие пикселей. В cookie проверяются атрибуты Secure, HttpOnly и SameSite для оценки риска сессий и утечек.

Проверка HTTPS, mixed content и внешних редиректов

Проверяется корректность TLS-сертификата и цепочки доверия, отсутствие mixed content (загрузка HTTP-ресурсов на HTTPS-странице) и редиректы на внешние домены с изменением схемы. Наличие mixed content может приводить к блокировкам браузером и влияет на безопасность загрузки ресурсов.

Доступность, язык и семантика

Оценивается наличие aria-атрибутов (aria-label, aria-hidden), корректность alt-текстов для изображений, использование семантических тегов article, nav, header, footer и атрибута lang в теге html. Кодировка определяется через meta charset; UTF-8 является стандартом де-факто.

Оценка ARIA, alt-текстов и семантических тегов

Проверяется соответствие alt-текстов содержимому изображений и отсутствие пустых alt там, где изображение несёт смысл. ARIA-атрибуты анализируются на предмет доступности взаимодействия с клавиатурой и вспомогательными технологиями; роль landmark-тегов помогает восстановить структуру для скринридеров.

Определение языка и кодировки страницы

Язык фиксируется по атрибуту lang и по заголовку Content-Language. Кодировка определяется через meta charset или заголовок Content-Type; конфликт между заголовком и метатегом сигнализирует о проблемах парсинга текста.

Форматы вывода и практические рекомендации

Часто применяемые форматы вывода — JSON с полями url, status, title, description, headings[], images[], scripts[] и schema: {type, data}. Пример вывода в JSON: {«url»:»…»,»status»:200,»title»:»…»,»headings»:[{«tag»:»h1″,»text»:»…»}],»schema»:[{«@type»:»Article»,»headline»:»…»}]}.

Примеры структурированных результатов (JSON, таблица)

JSON позволяет сохранить вложенные структуры и метаданные запросов (заголовки ответа, время). Альтернативный табличный экспорт представляет строки: url, status, title, author, date, но в машинных сценариях JSON обеспечивает более точную сериализацию вложенных сущностей и массивов.

Рекомендации по выбору инструментов и методов парсинга

Для единичных проверок используются HTTP-клиенты и HTML-парсеры с поддержкой CSS- и XPath-селекторов. Для страниц с динамикой применяются headless-браузеры с возможностью снятия HAR и исполнения JavaScript. Для валидации структурированных данных подходят JSON-LD парсеры и схемные валидаторы, а для оценки доступности — инструменты, проверяющие ARIA и наличие alt-текстов.

Средний рейтинг
0 из 5 звезд. 0 голосов.