Главная Портфолио Скрипты автоматизации Автоматизация SEO-анализа с Python: Разработка микросервиса для проверки Rich Results

{ Автоматизация SEO-анализа с Python: Разработка микросервиса для проверки Rich Results }

// Скрипты автоматизации

О проекте

Введение

В современном цифровом мире поисковая оптимизация (SEO) играет ключевую роль в видимости веб-ресурсов. Одним из важных аспектов SEO является реализация структурированных данных, которые позволяют поисковым системам лучше понимать содержание сайта и отображать обогащенные результаты (Rich Results) в поисковой выдаче. Для разработчиков и SEO-специалистов критически важно иметь возможность быстро проверять и анализировать структурированные данные на веб-страницах.

В этой статье я расскажу о разработанном мной микросервисе на Python, который автоматизирует процесс проверки Rich Results с помощью официального инструмента Google и существенно ускоряет процесс SEO-аудита.

Проблема и решение

Проблема

Ручная проверка структурированных данных через инструмент Google Rich Results Test занимает значительное время, особенно при необходимости анализа множества страниц. Каждая проверка требует:

  1. Перехода на страницу инструмента
  2. Ввода URL тестируемой страницы
  3. Ожидания завершения проверки
  4. Ручного копирования результатов для дальнейшего анализа

Для SEO-специалистов, работающих с крупными сайтами, этот процесс становится трудоемким и занимает часы рабочего времени.

Решение

Я разработал микросервис на Python, который:

  • Автоматизирует взаимодействие с Google Rich Results Test
  • Запускается по API-запросу
  • Выполняет проверку указанного URL
  • Автоматически извлекает результаты анализа
  • Возвращает данные в структурированном формате

Сервис построен на современном стеке технологий:

  • FastAPI — высокопроизводительный фреймворк для создания API
  • Selenium — инструмент для автоматизации браузера
  • Pydantic — библиотека для валидации данных
  • Pyperclip — инструмент для работы с буфером обмена

Техническая реализация

Архитектура микросервиса

Микросервис реализован как REST API на базе FastAPI, что обеспечивает высокую производительность и автоматическую документацию API. Основная функциональность выполняется через управление браузером Chrome с помощью Selenium.

python
from fastapi import FastAPI, Query
from pydantic import BaseModel
from typing import Optional
from selenium import webdriver
# Другие импорты...

app = FastAPI()

# Модель для ответа
class ClipboardResponse(BaseModel):
    data: str

@app.get("/process")
async def process(url: Optional[str] = Query("onliner.by", description="URL для проверки")) -> ClipboardResponse:
    # Логика обработки...
    return ClipboardResponse(data=clipboard_data)

Автоматизация браузера с Selenium

Одним из ключевых компонентов решения является настройка и управление веб-браузером через Selenium. Я реализовал функцию настройки браузера с оптимальными параметрами для стабильной работы:

 python
def setup_driver():
    user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
    chrome_options = Options()
    # chrome_options.add_argument("--headless")  # Опция для запуска в фоновом режиме
    chrome_options.add_argument("--disable-gpu")
    chrome_options.add_argument("--no-sandbox")
    chrome_options.add_argument("--window-size=1920x1080")
    chrome_options.add_argument(f"user-agent={user_agent}")
    driver_path = "chromedriver.exe"
    service = Service(driver_path)
    return webdriver.Chrome(service=service, options=chrome_options)

Алгоритм проверки Rich Results

Процесс проверки структурированных данных выполняется следующим образом:

  1. Запуск браузера с предустановленными параметрами
  2. Переход на страницу инструмента Google Rich Results Test
  3. Автоматический ввод проверяемого URL
  4. Ожидание завершения проверки (с установленными таймаутами)
  5. Взаимодействие с элементами страницы для получения результатов
  6. Копирование данных в буфер обмена и их извлечение
  7. Сохранение результатов в файл для дальнейшего анализа
  8. Возврат полученных данных через API-ответ
 python
@app.get("/process")
async def process(url: Optional[str] = Query("onliner.by", description="URL для вставки в поле ввода")) -> ClipboardResponse:
    driver = setup_driver()
    clipboard_data = ""
    try:
        test_url = "https://search.google.com/test/rich-results"
        driver.get(test_url)
        # Поиск поля для ввода URL и ввод значения
        input_field = driver.find_element(By.XPATH, '//input[@aria-label="Введите URL"]')
        input_field.send_keys(url)
        time.sleep(7)
        input_field.send_keys(Keys.RETURN)
        # Ожидание и обработка результатов...
        # ...
        clipboard_data = pyperclip.paste()
        # Сохранение в файл
        with open("copied_data.txt", "w", encoding="utf-8") as txt_file:
            txt_file.write(clipboard_data)
    except Exception as e:
        return ClipboardResponse(data=f"Ошибка: {e}")
    finally:
        driver.quit()
    return ClipboardResponse(data=clipboard_data)

Преимущества решения

Для SEO-специалистов

  1. Экономия времени: процесс, занимавший минуты на каждую страницу, сокращается до секунд
  2. Масштабируемость: возможность проверки большого количества URL через API
  3. Интеграция: легкая интеграция с другими инструментами и системами через API

Для разработчиков

  1. Быстрое тестирование: мгновенная проверка внедренных структурированных данных
  2. Автоматизация CI/CD: возможность включения проверки Rich Results в процесс непрерывной интеграции
  3. Расширяемость: простота добавления новой функциональности благодаря модульной архитектуре

Технические преимущества

  1. Производительность: FastAPI обеспечивает высокую скорость обработки запросов
  2. Современный API: полная типизация и автоматическая документация API (Swagger UI)
  3. Надежность: обработка исключений и корректное освобождение ресурсов

Оптимизация и улучшения

В процессе разработки я внедрил несколько оптимизаций для повышения надежности и производительности сервиса:

  1. Управление временем ожидания: использование явных пауз вместо "слепого" ожидания для обеспечения стабильности работы на различных соединениях:
 python
# Стратегическое использование пауз для стабильной работы
time.sleep(7)
input_field.send_keys(Keys.RETURN)
time.sleep(30)  # Достаточное время для полной загрузки результатов
  1. Сохранение результатов: автоматическое сохранение данных в файл для резервного копирования и дальнейшего анализа
 python
# Сохранение данных для последующего анализа
with open("copied_data.txt", "w", encoding="utf-8") as txt_file:
    txt_file.write(clipboard_data)
  1. Надежное освобождение ресурсов: использование блока finally для гарантированного закрытия браузера даже при возникновении ошибок
 python
finally:
    driver.quit()  # Гарантированное освобождение ресурсов браузера

Варианты расширения функциональности

Текущая версия микросервиса может быть расширена следующими способами:

  1. Пакетная обработка: добавление эндпоинта для проверки нескольких URL за один запрос
  2. Расширенная аналитика: парсинг и структурирование результатов для более удобного анализа
  3. Мониторинг: регулярная проверка ключевых страниц и отправка уведомлений при обнаружении проблем
  4. Интерфейс пользователя: разработка веб-интерфейса для работы с сервисом без программирования
  5. Расширенная обработка ошибок: добавление дополнительной логики для обработки различных сценариев и ошибок браузера

Заключение

Разработанный микросервис демонстрирует, как современные технологии Python могут эффективно решать практические задачи в области SEO. Автоматизация проверки Rich Results не только экономит время, но и повышает качество анализа структурированных данных.

Данный проект является примером моего подхода к разработке: решение реальной проблемы с использованием оптимальных технологий, внимание к деталям и фокус на практической пользе.

Код проекта доступен в моем GitHub-репозитории. Я продолжаю работать над улучшением микросервиса и открыт для предложений по его дальнейшему развитию.


Ключевые слова: Python, FastAPI, Selenium, SEO, автоматизация, Rich Results, микросервисы, API, веб-разработка, структурированные данные, Google Rich Results Test

Технические детали

  • Дата завершения:
    11.02.2025
  • Категория:
    Скрипты автоматизации
  • Технологии:
    Python FastAPI SEO

Нужен похожий проект?

Если вы заинтересованы в разработке подобного проекта или у вас есть вопросы, свяжитесь со мной!

Связаться со мной