Извлечение файлов из веб-архива (.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
отметьте, поскольку мои обходы содержат довольно много проблемных страниц. Для моего случая использования достаточно успешно извлечь большую часть, с чем этот инструмент справляется достаточно хорошо.