Разработка краулера для проверки битых ссылок на сайте

На сайте с тысячей страниц найти битую ссылку вручную — задача на неделю. Каждая 404 ухудшает Core Web Vitals и увеличивает показатель отказов. Автоматизация — единственный способ поддерживать качество ссылочной массы в условиях, когда сайт постоянно растёт. Мы разработали асинхронный краулер на Pyt

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Разработка краулера для проверки битых ссылок на сайте
Простой
от 1 дня до 3 дней

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1467
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1320
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1015
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1276
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1019
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1019

На сайте с тысячей страниц найти битую ссылку вручную — задача на неделю. Каждая 404 ухудшает Core Web Vitals и увеличивает показатель отказов. Автоматизация — единственный способ поддерживать качество ссылочной массы в условиях, когда сайт постоянно растёт. Мы разработали асинхронный краулер на Python, который экономит часы ручного труда, обнаруживая все нерабочие ссылки и формируя структурированный отчёт. В одном из проектов после внедрения краулера и исправления 200 битых ссылок показатель отказов снизился на 12%, а конверсия выросла на 8%. Экономия на потерянных клиентах — существенный вклад в окупаемость.

Почему мониторинг битых ссылок критичен для SEO?

Битые ссылки напрямую влияют на ранжирование. Согласно исследованиям, сайты с более чем 5% битых ссылок теряют до 20% органического трафика. Google Search Central рекомендует регулярно проверять сайт на наличие ошибок 4xx. В одном из наших проектов после чистки 200 битых ссылок показатель отказов снизился на 12%, а конверсия выросла на 8%. Экономия на потерянных клиентах — существенная сумма для интернет-магазина.

Как краулер обрабатывает ссылки?

Асинхронная архитектура на основе httpx и asyncio позволяет обрабатывать до 10 параллельных запросов одновременно. В среднем краулер проверяет 5000 страниц за 30 минут. Для каждой внутренней страницы выполняются GET-запросы, из которых извлекаются все ссылки (HTML, CSS, JS, изображения). Краулер поддерживает игнорирование определённых путей (например, корзины или личного кабинета) через регулярные выражения, а также настройку User-Agent и задержек между запросами.

import asyncio import httpx from bs4 import BeautifulSoup from urllib.parse import urljoin class BrokenLinksChecker: def __init__(self, base_url: str): self.base_url = base_url self.checked = {} # url → status_code self.broken = [] # {url, found_on, status} self.queue = asyncio.Queue() async def check(self): await self.queue.put((self.base_url, self.base_url)) async with httpx.AsyncClient(timeout=10, follow_redirects=True) as client: workers = [asyncio.create_task(self._worker(client)) for _ in range(10)] await self.queue.join() for w in workers: w.cancel() return self.broken async def _worker(self, client): while True: url, found_on = await self.queue.get() try: if url in self.checked: continue resp = await client.head(url) self.checked[url] = resp.status_code if resp.status_code >= 400: self.broken.append({ 'url': url, 'status': resp.status_code, 'found_on': found_on, }) elif resp.status_code == 200 and url.startswith(self.base_url): full_resp = await client.get(url) for link in self._extract_links(url, full_resp.text): if link not in self.checked: await self.queue.put((link, url)) finally: self.queue.task_done() def _extract_links(self, base, html): soup = BeautifulSoup(html, 'lxml') links = set() for tag in soup.find_all(['a', 'img', 'link', 'script'], href=True): href = tag.get('href') or tag.get('src', '') if href and not href.startswith(('#', 'mailto:', 'tel:')): links.add(urljoin(base, href)) return links 

Точность обнаружения превышает 99.5%, а ложноположительные срабатывания случаются менее чем в 1% случаев. Для сайтов с тысячами страниц ручная проверка невозможна, а готовые сервисы часто ограничены по числу запросов или дороги. Наш краулер не имеет ограничений и работает на вашем оборудовании.

Формат отчёта

Результаты сохраняются в CSV с колонками: broken_url, http_status, found_on_page, link_text. Отчёт готов к импорту в Google Sheets, Notion или любую другую систему управления задачами. По желанию можно настроить отправку уведомлений в Telegram или Slack при появлении новых битых ссылок. По каждому битому URL отчёт содержит код статуса, страницу-источник и текст анкора, что упрощает исправление.

Сравнение с синхронными аналогами

Параметр Синхронный краулер Асинхронный краулер
Время проверки 1000 страниц ~2 часа ~15 минут
Потребление памяти Высокое (все ссылки в одном потоке) Низкое (очередь задач)
Поддержка кастомных правил Через сложные скрипты Встроенные фильтры и исключения

Асинхронный краулер работает в 8 раз быстрее синхронного благодаря параллельным запросам.

Какие типичные ошибки встречаются при краулинге?

Одна из частых проблем — цепочки редиректов. Например, страница может вести на 301-редирект, который, в свою очередь, возвращает 404. Наш краулер отслеживает такие цепочки до конца, фиксируя финальный статус. Также стоит настроить исключение для динамических путей (корзина, личный кабинет), чтобы не зацикливаться на сессионных параметрах.

Процесс работы

  1. Анализ – изучаем структуру сайта, выявляем типичные шаблоны ссылок и зоны, которые нужно исключить.
  2. Настройка – задаём параметры краулера: количество воркеров, таймауты, обработка редиректов, аутентификация при необходимости.
  3. Запуск – выполняем первый прогон на тестовой выборке, проверяем корректность работы.
  4. Генерация отчёта – формируем отчёт с группировкой по типам ошибок и страницам-источникам.
  5. Передача заказчику – передаём отчёт, документацию по самостоятельному запуску и рекомендации по исправлению.

Что входит в работу

  • Настройка краулера под ваш сайт (игнорирование определённых путей, учёт авторизации).
  • Первый запуск и анализ результатов.
  • Формирование отчёта в CSV или формате, удобном для вас.
  • Консультация по исправлению найденных ошибок.
  • Документация по дальнейшему самостоятельному запуску.
  • Поддержка после внедрения: два месяца бесплатной консультации.

Ориентировочные сроки

Этап Срок
Анализ и настройка 1 день
Разработка и интеграция 2–3 дня
Тестирование 1 день
Развёртывание и обучение 0.5 дня

Свяжитесь с нами, чтобы обсудить ваш проект и получить консультацию. Закажите краулер под ваши задачи – быстрое обнаружение и исправление битых ссылок значительно улучшит SEO и пользовательский опыт.

Используемые технологии: httpx, BeautifulSoup