Парсинг Archive.org в A-Parser: Как выкачивать тысячи статей из Wayback Machine

Support Anastasia

Administrator
Команда форума
A-Parser Enterprise
wayback_hero.png


Парсинг Archive.org в A-Parser: Как выкачивать тысячи статей из Wayback Machine

Кратко

Поисковые системы хранят только актуальный веб, а старые статьи и исторические страницы исчезают: по данным Pew Research Center, 38% веб-страниц 2013 года стали недоступны к 2023 году.

Главным хранилищем истории интернета остаётся Wayback Machine (Archive.org). Но выкачивать архив классическим краулингом неэффективно. Профессиональный сбор строится на двух механизмах:
  • CDX API: моментальный индекс снимков — за пару секунд отдаёт выборку из 5 000 уникальных статей в JSON объемом всего ~350 КБ без загрузки тяжелого HTML.
  • Режим id_: загрузка оригинального HTML статьи без тулбаров, счетчиков и сторонних скриптов Веб-Архива.

В статье разбираем два практических решения в A-Parser:
1. No-Code-конвейер на встроенных парсерах Net::HTTPHTML::ArticleExtractor для быстрого экспорта в JSONL.
2. Готовый TypeScript-парсер JS::WaybackCDX с многоуровневой очередью this.query.add, параллельной выкачкой в 15–50 потоков, канонической нормализацией URL, очисткой через Mozilla Readability и сохранением готовых файлов Markdown (.md) с YAML Frontmatter (скорость — 131 статья/мин, 600 статей за 9 минут).



1. ПОЧЕМУ ИСТОРИЧЕСКИЙ КОНТЕНТ ИСЧЕЗАЕТ ИЗ ЖИВОГО ВЕБА — И ГДЕ ИСКАТЬ ЕГО КОПИИ

Поисковые системы ориентированы на текущее, актуальное состояние веба, а не на сохранение его истории. Как только сайт обновляет дизайн, меняет тарифы или удаляет старые статьи, поисковик перезаписывает свой индекс или выбрасывает страницы из выдачи (а недавно Google окончательно закрыл даже функцию просмотра кэшированных копий).

В итоге часть ценной информации со временем исчезает из живого веба. В исследовании Pew Research Center «When Online Content Disappears» 38% страниц из выборки 2013 года были недоступны к октябрю 2023 года.

Один из основных источников таких копий — Wayback Machine (Archive.org). Архив сохраняет снимки публичных веб-страниц и позволяет проверить, как в конкретную дату выглядели публикации, цены или описания продуктов. Наличие и полнота снимков зависят от того, что успел сохранить архив.

Что можно сделать с данными из Wayback Machine?
  1. Наполнение баз знаний и RAG-систем:
    Языковые модели и корпоративные базы знаний требуют чистого структурированного текста без программного мусора. В отличие от сырого HTML, где 70–85% объема занимают скрипты, баннеры и счетчики, сохранение статей напрямую в Markdown с метаданными сокращает объем текста в 4 раза и дает достоверный первоисточник исторических данных для RAG-систем.
  2. Наполнение PBN-сеток и сайтов на дроп-доменах:
    Чтобы восстановить исторический тематический вес купленного дроп-домена, нужен его оригинальный контент. A-Parser выкачивает весь массив исторических публикаций сайта с заголовками, датами и авторами. Полученные Markdown-файлы можно сразу импортировать в WordPress или любую другую CMS, экономя сотни часов на ручном рерайте.
  3. Анализ динамики цен и проверка рыночных гипотез:
    Отслеживание того, как менялась реальная стоимость товаров, недвижимости или автомобилей за последние 10–15 лет. Аналитики и исследовательские агентства используют исторические срезы цен и новостных публикаций для построения точных прогнозных моделей без искажения данных.
  4. Конкурентная разведка и аудит эволюции предложений:
    Анализ того, как за последние 5–10 лет менялись тарифные сетки, позиционирование и редакторская политика лидеров рынка. Архив позволяет увидеть реальную историю продуктовых гипотез конкурентов — какие предложения принесли им масштаб, а какие провалились и были удалены.
  5. Поиск удаленной информации и закрытых страниц:
    Многие закрытые платформы в ранних версиях использовали простые интерфейсы и открытую структуру данных. Архив позволяет находить удаленные журналистские расследования, закрытые разделы и старые публикации, исчезнувшие из поисковиков.

Ниже мы подробно разберем, как настроить сбор архивов в A-Parser с помощью двух подходов: No-Code-связки и готового JS-парсера. Оба варианта разделяют поиск архивных URL и извлечение контента, а результат можно сохранять в Markdown и JSONL.



2. КАК УСТРОЕН СБОР ИЗ WAYBACK MACHINE: CDX API И ЧИСТЫЙ РЕЖИМ ID_

Выкачивать исторический контент обычным краулингом «со страницы на страницу» неэффективно: вы потратите часы на обход архивных меню, пагинаций и битых ссылок.

Профессиональный конвейер строится всего на двух быстрых операциях:
  1. Мгновенный поиск ссылок через CDX API — получение списка сохраненных страниц в виде легковесного JSON без загрузки тяжелого HTML.
  2. Точечная загрузка страниц в режиме id_ — скачивание «чистого» содержимого статьи без тулбаров, баннеров и сторонних скриптов Веб-Архива.

2.1. CDX API: моментальный индекс снимков вместо слепого краулинга

CDX Server API — это внутренний поисковый индекс Internet Archive. Вместо скачивания терабайтов веб-страниц вы отправляете один HTTP-запрос и за пару секунд получаете точный список всех доступных публикаций сайта за нужные годы.

Пример реального запроса к индексу:

Код:
https://web.archive.org/cdx/search/cdx?url=smashingmagazine.com/&matchType=prefix&collapse=urlkey&output=json&fl=timestamp,original&filter=statuscode:200&filter=mimetype:text/html&from=2020&to=2021&limit=5000

Ключевые параметры фильтрации CDX:

ПараметрЗначение в примереЗачем нужен и как работает
url + matchType=prefixsmashingmagazine.com/Ищет все страницы домена или раздела (/blog/, /articles/).
filter=statuscode:200statuscode:200Отсекает страницы с ошибками (404, 500, 301), оставляя только успешные снимки.
filter=mimetype:text/htmltext/htmlИсключает картинки, стили, PDF и JavaScript-файлы.
collapse=urlkeyurlkeyГлавный фильтр дедупликации: схлопывает сотни повторных снимков одного и того же URL, оставляя только одну уникальную ссылку.
fltimestamp,originalВозвращает только дату снимка и адрес страницы — экономит до 80% объема трафика.
from / to2020 / 2021Ограничивает период архивных снимков (а не дату в тексте статьи).
limit5000Ограничивает размер порции для стабильной передачи данных.

Результат: Запрос к smashingmagazine.com или www.theverge.com возвращает выборку из 5 000 уникальных статей всего за 2–7 секунд, а полученный JSON занимает всего ~350 КБ.

2.2. Режим id_: скачивание статей без архивного мусора

Когда вы открываете сохраненную страницу в веб-архиве, Archive.org внедряет в ее код панель навигации (Wayback Toolbar), сервисные скрипты аналитики и переписывает внутренние ссылки.

Если отдать такую страницу в парсер или библиотеку очистки текста (Mozilla Readability, Trafilatura), этот служебный мусор неизбежно попадет в текст статьи.

Чтобы запросить исходный HTML снимка без обвязки архива, добавьте суффикс id_ сразу после 14-значного таймстемпа:

Код:
ОБЫЧНЫЙ REPLAY (с тулбаром и скриптами архива):
https://web.archive.org/web/20210301134743/http://www.theverge.com/2011/06/09/google-voice-skype-imessage-and-the-death-of-the-phone-number/
  └── Содержит баннер Wayback, счетчики и переписанный DOM.

ЧИСТЫЙ REPLAY С id_ (только контент оригинального сайта):
https://web.archive.org/web/20210301134743id_/http://www.theverge.com/2011/06/09/google-voice-skype-imessage-and-the-death-of-the-phone-number/
  └── Отдает «сырой» снимок страницы, идеально подходящий для экстракции текста.

Совет по надежности: Режим id_ убирает визуальную панель архива, но не гарантирует целостность внешних ресурсов (шрифтов, CDN), если они не были сохранены в тот же момент времени. Поэтому на этапе извлечения текста экстрактор должен опираться на текстовые блоки в DOM-дереве.



3. ПОДХОД №1: NO-CODE-КОНВЕЙЕР (NET::HTTP ➔ HTML::ARTICLEEXTRACTOR)

Если нужно выгрузить архив сайта без написания кода, используйте две встроенные задачи A-Parser. Первая получает ссылки из CDX API напрямую, без прокси. Вторая скачивает replay-страницы и извлекает из них основной контент; на этом этапе уже можно использовать прокси.

wayback1_ru.png


Как работает связка
  1. Net::HTTP собирает ссылки. Парсер обращается к CDX API с выключенным useproxy, оставляет HTML-снимки со статусом 200 и формирует replay-ссылки с модификатором id_. Адреса сохраняются в рабочий файл cdx_clean_links.txt.
  2. HTML::ArticleExtractor скачивает и очищает страницы. Второй парсер параллельно обрабатывает полученные ссылки. Количество потоков определяется выбранным конфигом A-Parser. Mozilla Readability выделяет основной контент и возвращает заголовок, автора, длину, HTML и текст статьи. Результат сохраняется в JSONL.

Пресет записывает по одной JSON-строке на успешно обработанную статью. Он сохраняет полный объект $p1.json, включая URL запроса в query.query, заголовок title, автора byline, длину length, очищенный текст textContent, HTML content, название сайта siteName, HTTP-код code и статус success. Сокращённый пример основных полей:

JSON:
{"query":{"query":"https://web.archive.org/web/20210301134743id_/http://www.theverge.com/2011/06/09/google-voice-skype-imessage-and-the-death-of-the-phone-number/"},"title":"iMessage, Skype, Google Voice, and the death of the phone number","byline":"Nilay Patel","length":6840,"textContent":"Очищенный текст статьи...","siteName":"The Verge","code":200,"success":1}

Результаты теста производительности No-Code-связки (Smashing Magazine, The Verge, TechCrunch)

Финальный пресет протестирован связкой Net::HTTPHTML::ArticleExtractor: первая задача собрала ссылки через CDX API, вторая задача скачала и очистила статьи на 15 прокси-потоках.
  • Входные запросы:
    Код:
    smashingmagazine.com 2021 200
    www.theverge.com 2021 200
    techcrunch.com 2019 200
  • Этап 1 (CDX Collector): 600 уникальных id_-ссылок (по 200 на каждый домен) получены всего за 6 секунд, 0 ошибок.
  • Этап 2 (ArticleExtractor): параллельная выкачка и очистка на 15 прокси-потоках со средней скоростью ~80–90 страниц в минуту.
  • Качество контента: 100% успешных запросов (totalFail = 0), статьи автоматически очищены от обвязки через Mozilla Readability с сохранением заголовка, автора, длины и текста.
  • Готовый файл: theverge_articles_clean.jsonl со структурированными JSON-строками.

Скачать готовый пресет: preset.txt

Инструкция по запуску:

  1. Откройте «Редактор заданий»«Задание» → в выпадающем меню выберите «Импортировать пресет» и вставьте код из preset.txt.
  2. В поле «Список запросов» укажите целевые домены с годом и лимитом через пробел:
    Код:
    smashingmagazine.com 2021 200
    www.theverge.com 2021 200
    techcrunch.com 2019 200
  3. Нажмите «Добавить задание». Встроенный Конструктор запросов (Query Builder) автоматически разберёт домен, год и лимит, сформирует CDX-запрос, сохранит найденные id_-ссылки и запустит их параллельную обработку вторым заданием.



4. ПОДХОД №2: ГОТОВЫЙ JS/TS-ПАРСЕР (JS::WAYBACKCDX)

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

Для этого в A-Parser можно создавать собственные парсеры на JavaScript или TypeScript. Вы описываете правила работы, а A-Parser берёт на себя многопоточность, сеть, прокси, очередь и сохранение данных.

В качестве практического примера для этой статьи мы подготовили JS::WaybackCDX — полнофункциональный парсер на TypeScript, который объединяет всю цепочку в один запуск. Он берет на себя поиск снимков в CDX API, параллельную выкачку страниц через внутреннюю очередь подзапросов (this.query.add), очистку через Mozilla Readability, умную нормализацию URL и сохранение готовых Markdown-статей на диск.

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

wayback2_ru.png


Что происходит «под капотом»: замена сложного пайплайна одним скриптом

Обычно для создания подобного конвейера разработчикам приходится писать собственный краулер, подключать Redis для очередей, настраивать прокси-пул и базу данных для сверки дублей.

В JS::WaybackCDX весь этот процесс упакован в один прозрачный сценарий:
  1. Мгновенный отбор и параллельная очередь (this.query.add)
    Парсер за секунды запрашивает легковесный индекс CDX через прокси, отсекает служебные страницы и регистрирует ссылки во внутренней очереди A-Parser. Это позволяет задействовать любое количество рабочих потоков и видеть динамический прогресс по каждой статье в UI.
  2. Умная нормализация URL и фильтрация мусора
    Главная проблема веб-архива — один и тот же материал может встречаться под разными протоколами (http/https), с префиксом www и без него, либо в виде технических ссылок. Парсер нормализует канонические URL, отсекает служебные разделы (/wp-admin/, /tag/, /category/, медиафайлы) и оставляет только уникальные страницы со статьями.
  3. Готовый Markdown с YAML Frontmatter для RAG и LLM
    Каждая статья очищается алгоритмом Mozilla Readability и сохраняется в виде готового .md-файла со структурированными метаданными (заголовок, автор, дата архивации, ссылка на оригинал). Такие файлы можно без дополнительной предобработки загружать в векторные базы данных, Obsidian или датасеты для дообучения нейросетей.

Пример сгенерированного .md-файла статьи:

Markdown (GitHub flavored):
---
title: "How To Communicate Design Decisions To Clients? — Smashing Magazine"
author: "About The Author"
site_name: "Smashing Magazine"
length: 9301
timestamp: "20210211022848"
original_url: "http://www.smashingmagazine.com/2008/07/how-to-communicate-design-decisions-to-clients/"
archive_url: "https://web.archive.org/web/20210211022848id_/http://www.smashingmagazine.com/2008/07/how-to-communicate-design-decisions-to-clients/"
---

# How To Communicate Design Decisions To Clients? — Smashing Magazine

**Author:** About The Author
**Source:** Smashing Magazine
**Archive Replay:** https://web.archive.org/web/20210211022848id_/http://www.smashingmagazine.com/2008/07/how-to-communicate-design-decisions-to-clients/

---

Brian Armstrong is an entrepreneur who also enjoys studying design. He writes about topics such as UI design, building web companies, and how to quit your ...

Результаты теста производительности JS::WaybackCDX (Smashing Magazine, The Verge, TechCrunch)

Мы протестировали работу парсера на реальных данных 3 крупных медиа на 15 прокси-потоках:
  • Входные запросы:
    Код:
    smashingmagazine.com 2021 200
    www.theverge.com 2021 200
    techcrunch.com 2019 200
  • Поиск в CDX API: снимки для всех 3 доменов найдены и отфильтрованы через прокси с автоматической защитой от ошибок шлюза (502/504).
  • Многоуровневая очередь (this.query.add): в очередь задач A-Parser поставлено 600 подзапросов (по 200 на каждый домен) — воркеры параллельно скачивали страницы, а счетчик страниц динамически увеличивался в реальном времени.
  • Принято и сохранено на диск: ровно 600 качественных статей в Markdown (по 200 на каждый сайт).
  • Очистка и качество: тексты очищены алгоритмом Mozilla Readability, мусорные и короткие страницы отсеяны, totalFail = 0 (100% успех).
  • Время работы: 9 минут 08 секунд на полный цикл выкачки 600 статей (средняя скорость — 131 статья в минуту).
  • Результат на диске: папка results/wayback-md-94/ с отдельными .md файлами (YAML Frontmatter + чистый текст).

Скачать готовый парсер (Single File): WaybackCDX.ts

Как установить парсер: 2 простых способа

Способ №1: Установка через веб-интерфейс (Редактор JS парсеров)
  1. В главном меню A-Parser перейдите в «Редактор JS парсеров».
  2. В блоке создания нового парсера укажите:
    • Тип парсера: выберите TypeScript.
    • Имя парсера (строго обязательно): введите WaybackCDX
      (Критически важно: имя класса в коде парсера имеет вид JS_<ИмяПапки>. Название WaybackCDX должно совпадать с точностью до регистра букв, иначе A-Parser не сможет загрузить настройки пресета и поля переопределений в задании).
  3. Нажмите «Создать». В редакторе откроется сгенерированный файл WaybackCDX.ts.
  4. Полностью выделите и удалите шаблонный код, затем вставьте исходный код из скачанного файла WaybackCDX.ts.
  5. Нажмите «Сохранить» (Ctrl + S). A-Parser автоматически скомпилирует TypeScript в рабочий JavaScript-модуль.

Способ №2: Установка через файловую систему
  1. Скачайте файл WaybackCDX.ts.
  2. Поместите его в папку files/parsers/WaybackCDX/ вашей установки A-Parser (создайте папку WaybackCDX, если её ещё нет).
  3. Обновите страницу A-Parser или перезапустите сервис — парсер JS::WaybackCDX мгновенно появится в списке доступных парсеров.

Как запустить сбор статей:
  1. Перейдите в «Редактор заданий» и выберите парсер JS::WaybackCDX.
  2. В поле «Список запросов» укажите целевые сайты (поддерживается указание года и лимита через пробел):
    Код:
    smashingmagazine.com 2021 200
    www.theverge.com 2021 200
    techcrunch.com 2019 200
  3. Настройки парсера (доступны в пресете ✏️ и в переопределениях задания ️):
    • fromYear и toYear — диапазон дат для поиска снимков (по умолчанию 2020–2026);
    • maxArticles — максимальное количество качественных статей на домен (по умолчанию 500);
    • minLength — минимальная длина очищенного текста статьи в символах (по умолчанию 10);
    • markdownFiles — автоматическое сохранение статей в виде отдельных файлов .md с метаданными YAML Frontmatter (по умолчанию включено).
  4. Формат результата: укажите $p1.articles.format('$json\n') (или оставьте $p1.preset).
  5. Нажмите «Добавить задание». Парсер мгновенно получит снимки из CDX API, распределит задачи между рабочими потоками A-Parser и сохранит чистые статьи в папку results/wayback-md-<taskId>/.



5. СРАВНИТЕЛЬНАЯ МАТРИЦА: КАКОЙ ПОДХОД ВЫБРАТЬ?

КритерийПодход №1: No-Code-связкаПодход №2: JS/TS-парсер
Сложность настройкиИмпорт пресета и настройка двух связанных этаповЗагрузка пользовательского парсера и настройка его лимитов
Удобство запускаПервое задание сохраняет ссылки и запускает второеОдин парсер управляет поиском и параллельной выкачкой
Промежуточные данныеСоздаёт .txt-файл replay-ссылокПередаёт выбранные страницы через внутреннюю очередь подзапросов (this.query.add)
Дедупликация и фильтрацияБазовая по URL на стороне CDXКомплексная: CDX urlkey + нормализация URL + отсев служебных путей и тегов
Производительность~80–90 статей/мин в 15 потоков131 статья/мин в 15 потоков (600 статей за 9 мин)
Форматы на выходеJSONL, CSV, TXTMarkdown (Frontmatter), JSONL, Raw HTML
Границы запускаЛимит задаётся во входном запросе к CDXЛимиты задаются прямо в интерфейсе парсера



6. ЗАКЛЮЧЕНИЕ: АРХИТЕКТУРНАЯ ГИБКОСТЬ A-PARSER

Кейс с парсингом Wayback Machine наглядно демонстрирует главное преимущество A-Parser: это не жесткий «черный ящик» с фиксированным функционалом, а масштабируемая платформа для работы с данными любого объема и сложности.

Вы сами выбираете подходящий уровень контроля:
  • No-Code уровень (скорость и простота):
    Комбинируйте десятки готовых встроенных парсеров (Net::HTTP, HTML::ArticleExtractor, поисковые движки, социальные сети) в связанные конвейеры через визуальный Конструктор запросов (Query Builder). Это позволяет автоматизировать 90% типовых SEO- и аналитических задач без единой строчки кода.
  • Low-Code / TypeScript уровень (безграничная кастомизация):
    Когда стандартных возможностей недостаточно, пишите собственные парсеры на JavaScript или TypeScript. Вам не нужно поднимать Redis, настраивать пулы воркеров или писать обвязку для ротации прокси — A-Parser берет на себя всю тяжелую сетевую инфраструктуру и многопоточность, позволяя разработчику сосредоточиться исключительно на бизнес-логике.
Собираете ли вы исторические датасеты для обучения LLM и RAG-систем, восстанавливаете утраченный контент сайтов или проводите масштабные аудиты конкурентов — A-Parser дает скорость и надежность прямо из коробки.



Рекомендуемый стек для запуска:
  • A-Parser Pro / Enterprise
    Инструмент для параллельного сбора и извлечения контента. Для запуска собственного JavaScript/TypeScript-парсера нужна лицензия с поддержкой пользовательских парсеров; актуальные условия указаны на странице покупки.
  • Unlimited-прокси A-Parser
    Прокси обеспечивают высокую скорость и обход лимитов при параллельной загрузке сотен архивных страниц.



Полезные ссылки и материалы:
 
Назад
Верх