Создать URL
Генератор Правила транслитерации Как сделать ЧПУ Транслит для загранпаспорта ГОСТ 7.79 ISO 9 Блог Вопросы и ответы Создать URL
Практика

Проверка микроразметки в пакетном режиме

Разберём, как автоматически проверить разметку на большой выборке и найти шаблоны с ошибками.

Зачем нужна пакетная проверка

Разметка формируется шаблоном, поэтому ошибка в шаблоне повторяется на всех страницах этого типа. Проверять по одной странице с помощью валидатора: проверка разметки валидаторами — полезно, но не покрывает изменений после релизов. Пакетная проверка берёт выборку страниц каждого шаблона и сверяет разметку с ожиданиями.

Выборкастраницпо шаблонамИзвлечениеразметкиПроверкаполейОтчётоб ошибках
Выборкастраницпо шаблонамИзвлечениеразметкиПроверкаполейОтчётоб ошибках
Порядок пакетной проверки

Как выбрать страницы

  • По нескольку десятков страниц каждого шаблона: карточка, категория, статья, контакты.
  • Включайте разные случаи: товары с отзывами и без, со скидкой и без, в наличии и нет.
  • Добавьте недавно опубликованные страницы: ошибки чаще появляются у новых.

Скрипт извлечения

import json
import re
import requests

pattern = re.compile(r'<script type="application/ld[+]json">(.*?)</script>', re.S)
required = {"Product": ["name", "offers"], "Article": ["headline", "datePublished"]}

def check(url):
    html = requests.get(url, timeout=10).text
    problems = []
    for block in pattern.findall(html):
        try:
            data = json.loads(block)
        except ValueError:
            problems.append("invalid json")
            continue
        items = data if isinstance(data, list) else [data]
        for item in items:
            for field in required.get(item.get("@type"), []):
                if field not in item:
                    problems.append("missing " + field)
    return problems

Скрипт скачивает страницу, находит блоки разметки, разбирает их и проверяет наличие обязательных полей для типов, перечисленных в словаре. Он не заменяет валидатор: реальные требования зависят от типа разметки и сервиса, поэтому набор обязательных полей заполните по документации.

Что проверять

Проверки разметки
ПроверкаКак выполнитьПризнак проблемы
Корректность форматаРазобрать блок как JSONОшибка разбора
Обязательные поляСверить со списком для типаПоля отсутствуют или пусты
Соответствие страницеСравнить цену, название и наличие в разметке и на страницеРасхождения
Дубли блоковПосчитать блоки одного типаДва блока Product на одной странице без причины
Типы значенийЧисло, дата, адрес в нужном форматеЦена текстом, дата в неверном формате

Регулярность

  1. Запускайте проверку после каждого релиза, затрагивающего шаблоны.
  2. Раз в неделю проверяйте выборку по расписанию: изменения данных тоже ломают разметку.
  3. Сохраняйте результаты и сравнивайте с прошлым запуском.

Связанные материалы. Типичные ошибки и их причины — в статье про ошибки разметки, список проверок для магазина — в чек-листе микроразметки, а пример разметки товара — в статье Product: цена, наличие, рейтинг.

Как оформить результат

  • Сгруппируйте ошибки по типам разметки и шаблонам страниц: исправлять нужно шаблон.
  • Для каждой группы укажите число затронутых страниц из выборки и пример адреса.
  • Отдельно выделите критичные ошибки — сломанный формат и отсутствие обязательных полей — от рекомендаций.
  • После исправления повторите проверку на той же выборке и сохраните результат.

Частые вопросы

Зачем проверять разметку пакетом, если есть валидаторы?

Валидатор проверяет одну страницу, а ошибка шаблона повторяется на тысячах; пакетная проверка находит её сразу и после каждого релиза.

Как выбрать страницы для пакетной проверки?

Взять по нескольку десятков страниц каждого шаблона, включая разные случаи и недавно опубликованные страницы.

Заменяет ли скрипт валидатор?

Нет: он проверяет заданные поля и формат, а полные требования к типу разметки проверяет валидатор и документация поисковой системы.

Готовый адрес можно собрать прямо сейчас: откройте генератор ЧПУ — он транслитерирует фразу по таблице Яндекса, уберёт служебные слова и покажет длину адреса.

Читайте также