Извлечение файлов из веб-архива (.warc)

У меня есть несколько веб-сайтов, которые я архивирую, чтобы сохранить там много связанных файлов, в частности, несколько PDF-файлов.

У меня не было проблем с использованием сканера Heritrix для сбора сайтов. Однако я не нашел хорошего решения для извлечения файлов из этих .warc файлы.

Есть ли у кого-то опыт с этим, или есть предпочтительный способ получить эти отдельные файлы?

7 ответов

Вы можете просматривать WARC с помощью Webarchive Player и сохранять нужные файлы из своего браузера. Кроме того, загрузите WARC в https://webrecorder.io/ и просмотрите / загрузите там.

ReplayWeb.page заменяет Webrecorder Player, который заменил WebArchivePlayer.

Никакого приложения для установки не требуется, просто зайдите на страницу и выберите свой файл. Вся обработка локальная.

Я предлагаю попробовать warctools https://github.com/internetarchive/warctools это python lib, который очень прост в использовании.

Я использую этот проект: https://github.com/chfoo/warcat .

Пример запуска:

      python3 -m warcat --help
python3 -m warcat list example/at.warc.gz
python3 -m warcat verify megawarc.warc.gz --progress
python3 -m warcat extract megawarc.warc.gz --output-dir /tmp/megawarc/ --progress

Я обнаружил, что 7-Zip сам по себе часто не работает, но для него есть плагин eDecoder, который можно использовать для включения поддержки Warc.

eDecoder можно скачать бесплатно отсюда.

При открытии варка с установленным плагином он действует как любой другой архив в 7-Zip за некоторыми исключениями:

  • добавляется дополнительный столбец, в котором показан исходный URL-адрес каждого файла.
  • к каждому файлу добавляется число, чтобы предотвратить конфликты имен файлов (например,index.htmlможно было бы переименовать в000123 index.html).
  • Структура папок отбрасывается, все файлы видны в главном представлении независимо от того, в какой папке они находились изначально, а папок фактически нет вообще.

Хотя его можно загрузить бесплатно, он, похоже, имеет закрытый исходный код, как с точки зрения кода, так и с точки зрения лицензии, и поэтому ограничен для Windows, поскольку представляет собой скомпилированную DLL.

Ранее я использовал 7-Zip для извлечения отдельных файлов или целых архивов из файлов формата Web Archive.

Это доступно на их сайте здесь.

Я искал решение, подходящее для использования терминала (Ubuntu). К сожалению, в моем случае (файлы warc, созданные с помощью браузера-краулера) предыдущие ответы не сработали.

Я обнаружил, что в моем случае лучше всего работает warc-extractor .Это инструмент Python, и извлечь все HTML-страницы так же просто, как вызвать:

      $ warc-extractor http:content-type:text/html -dump content -error

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

Другие вопросы по тегам