Перейти к основному содержимому

wparc — как создать цифровой архив сайта на WordPress

Подготовлена бета-версия утилиты командной строки wparc для архивации данных из сайтов, созданных на движке WordPress, на котором работает огромное число сайтов СМИ и личных блогов.

Утилита использует стандартное REST API, предоставляемое CMS WordPress и доступное по адресу /wp-json/. Это позволяет значительно быстрее собирать дампы данных, чем классические веб-краулеры: вместо обхода HTML-страниц и извлечения ссылок инструмент напрямую читает структурированные данные.

Подробнее о структурах данных сайтов на WordPress — в документации WordPress REST API.

Когда использовать wparc​

  • На сайте десятки тысяч постов и страниц (wparc справится за минуты вместо часов у wget/Browsertrix).
  • Нужна только структура контента (посты, рубрики, теги, комментарии), без визуального оформления.
  • WordPress стоит на «глубоком» домене, где классический кроулер может упасть на динамической подгрузке.

Когда НЕ подходит​

  • Сайт с большим объёмом JavaScript-контента, SPA-поведением — там лучше Browsertrix.
  • Сайт с включённой аутентификацией для контента.
  • Сайт, на котором REST API отключён или ограничен.

Команды​

  • dump — выгрузить все данные через обход точек подключения к API. Результатом исполнения команды являются файлы в форматах .json и .jsonl.
  • getfiles — выгрузка всех медиа-файлов, перечисленных в файле wp_v2_media.jsonl, полученного после исполнения команды dump.
  • pack — упаковка результата в WARC-архив для дальнейшей обработки metawarc.

Пример использования​

# Установка
pip install wparc

# Дамп всех постов и страниц
wparc dump --url https://example.com --output ./dump/

# Скачивание всех медиафайлов по списку из дампа
wparc getfiles --input ./dump/wp_v2_media.jsonl --output ./media/

# Упаковка в WARC
wparc pack --input ./dump/ --output example.warc.gz

Примеры сайтов на WordPress​

И сотни других региональных СМИ, общественных проектов и личных блогов.

Ограничения​

  • Некоторые владельцы сайтов на WordPress блокируют доступ к /wp-json/ для неавторизированных пользователей — из таких сайтов невозможно извлечь данные этим способом.
  • У старых версий WordPress (до 4.7) точка подключения /wp-json/ отсутствует — из них тоже невозможно скачать данные утилитой.
  • Плагины безопасности (Wordfence, iThemes Security) могут ограничивать частоту запросов к API.
  • Медиафайлы с hotlink-protection сохраняются с оригинальными URL, при переносе архива на другой хостинг ссылки могут не работать.

Что в планах​

  • Команда check — проверка сайта на возможность выгрузки данных.
  • Упаковка в Data Package (Frictionless Data) для долгосрочного сохранения.
  • Поддержка выгрузки данных без доступного API (по определённым шаблонам этой CMS).

Найденные ошибки заполняйте в issues репозитория проекта wparc.

Связанные разделы​