Почему важны изменения
В выгрузке тысячи строк, и почти все они в порядке. Проблемы обнаруживаются по изменениям: появились сотни новых адресов, пропал раздел, у страниц сменился код ответа. Сравнение двух обходов сразу выводит на такие события. Аналогичный метод для переездов описан в статье про сравнение до и после переезда; здесь — регулярный вариант.
| Изменение | Что может означать | Реакция |
|---|---|---|
| Новые адреса в большом числе | Новые страницы или технические дубли | Проверить шаблон и параметры |
| Пропавшие адреса | Удаление, ошибка навигации, сбой обхода | Сверить с намерением |
| Изменился код ответа | Ошибка выкладки, перенаправление | Проверить причины |
| Изменился заголовок или H1 | Правка контента или шаблона | Проверить массовые изменения |
| Страница стала неиндексируемой | Появился запрет, canonical на другой адрес | Срочная проверка |
| Изменилась глубина | Изменилась навигация | Оценить влияние на структуру |
Скрипт сравнения
import csv
def load(path):
with open(path, newline="", encoding="utf-8") as f:
return {r["url"]: r for r in csv.DictReader(f)}
old = load("crawl_prev.csv")
new = load("crawl_now.csv")
added = sorted(set(new) - set(old))
removed = sorted(set(old) - set(new))
changed = [u for u in old.keys() & new.keys()
if old[u]["status"] != new[u]["status"]]
print("added", len(added))
print("removed", len(removed))
print("status changed", len(changed))
for u in changed[:20]:
print(u, old[u]["status"], "->", new[u]["status"])
Скрипт сравнивает два файла и печатает число добавленных и пропавших адресов и адреса с изменившимся кодом ответа. Аналогично сравниваются заголовки, канонические адреса и признак индексируемости. Названия столбцов зависят от краулера.
Хранение снимков
- Называйте файлы датой обхода:
crawl_2026-09-20.csv. - Храните снимки не меньше года: по ним видно, когда появилась проблема.
- Всегда сравнивайте одинаковые настройки обхода: иначе различия будут ложными: настройки сканирования.
Как отсечь шум
- Исключите из сравнения адреса, которые меняются постоянно: календари, ленты новостей, случайные параметры.
- Задайте порог: оповещение, если изменение затронуло более заданной доли страниц.
- Группируйте изменения по шаблонам и разделам: один шаблон — одна причина.
- Запишите объяснение каждого крупного изменения: через полгода это пригодится.
Связанные материалы. Выбор и настройка краулера — в статьях обзор краулеров и сканирование большого сайта. Мониторинг дублей на основе таких сравнений — в статье мониторинг появления дублей.
Пример разбора изменений
В понедельник сравнение показывает: добавилось три тысячи новых адресов, пропало сорок, у двухсот страниц изменился код ответа. Три тысячи новых адресов группируются по шаблону: все с параметром сортировки. Значит, после релиза ссылки на сортировку стали обычными ссылками, и их нужно закрыть. Сорок пропавших — товары, снятые с продажи, что ожидаемо. Двести страниц с изменившимся кодом — перенаправления на новые адреса категорий, которые запланировали заранее. Из трёх событий срочной оказалась только первая, и найти её помогло сравнение.
Частые вопросы
Зачем сравнивать обходы, если можно смотреть один?
Проблемы чаще видны по изменениям: новые массовые адреса, пропавшие разделы, смена кодов ответа; сравнение выводит на них сразу.
Что нужно для корректного сравнения?
Одинаковые настройки обхода и сохранённые снимки с датой; при разных настройках различия будут ложными.
Как не утонуть в шуме изменений?
Исключить постоянно меняющиеся адреса, задать порог оповещения и группировать изменения по шаблонам и разделам.
Готовый адрес можно собрать прямо сейчас: откройте генератор ЧПУ — он транслитерирует фразу по таблице Яндекса, уберёт служебные слова и покажет длину адреса.