How to prepare archives
Не все официальные сайты дают возможность сохранить всю имеющуюся на них информацию поскольку:
- используют Javascript навигацию
- используют AJAX
- блокируют роботов в robots.txt
- содержат изолированные (не связанные ссылками) разделы
- закрывают доступ авторизацией
Поэтому, для архивации сайта необходимо, в первую очередь, понять возможно ли это сделать стандартными средствами. Эта проверка включает следующие действия:
- Просмотр основных раздела сайтов, проверка что на сайте используется нормальная ссылочная навигация.
- Просмотр файла robots.txt на предмет блокировки отдельных разделов
- Проверка объёма сайта в кэше Гугл запросом "site: [domain.name]"
В случае если ограничения не обнаружены возможно сохранение посредством стандартных инструментов. Если обнаружены, то с использованием специализированных скриптов.
Архивация данных требует систематизированной работы по ведению метаданных. По каждому архиву должно фиксироваться:
- название сайта (или блока сохраняемых ресурсов);
- ссылка
- дата архивации
- наименование организации (если есть)
- регион (если есть)
- описание
- основание для архивации
- совокупность архивных файлов -- название файла -- размер файла -- формат файла
- отношения -- понятия в dbpedia.org
Подробности - https://en.wikipedia.org/wiki/Preservation_metadata
- Сайты сохраняются слепками + прорабатываются механизмы инкрементального обновления данных.
- Основные инструменты сохранения: wget + httrack
- Специальные скрипты разрабатываются по необходимости
- Разрабатывается библиотека типовых решений специальных скриптов
Wget - это бесплатный и открытый инструмент для архивации веб-сайтов с широким спектром возможностей. Начиная с версии 1.14 Wget поддерживает сохранение сайтов в формат WARC.
Пример, архивация сайта www.gov.ru wget "http://www.gov.ru" --warc-file="gov.ru" --warc-cdx --mirror -w 1 --random-wait -e robots=off -o gov.ru.log --limit-rate=512k --cookies=on --keep-session-cookies --save-cookies=gov.ru.cookie.txt -v
Опции:
- --warc-file="filename" - сохранение в WARC файла, название файла
- --warc-cdx - создание .cdx файла с описанием содержания WARC файла
- --mirror - делать копию сайта, а не скачать одну страницу
- -w num - таймаут между обращениями в секундах
- --random-wait - варьировать таймаут между обращениями
- -o filename - файл для сохранения лога архивации
- --limit-rate=num - ограничение трафика на выгрузку
- --cookies=on - поддерживать куки
- --keep-session-cookies - сохранять сессионные куки
- --save-cookies="filename" - сохранять куки в файл filename
- -v - вывод подробной информации
Httrack - это инструмент с открытым исходным кодом и регулярно используемый для архивации веб-сайтов
Пример, архивация сайта www.gov.ru: httrack --connection-per-second=50 --sockets=15 --keep-alive --display --verbose --advanced-progressinfo --disable-security-limits -n -i -s0 -m -F 'Mozilla/5.0 (X11;U; Linux i686; en-GB; rv:1.9.1) Gecko/20090624 Ubuntu/9.04 (jaunty) Firefox/3.5' --max-rate=1000000 www.gov.ru
Опции:
- --conection-per-second - число соединений в секунду
- --sockets - общее число сокетов
- --keep-alive - удерживать установленные соединения
- --display - отображение информации
- --verbose - подробная информация
- --disable-security-limits - снятие ограничения на число соединений
- -n - собирать не html ресурсы рядом с html файлом
- -i - продолжить прерванную выгрузку из кэша
- -s0 - игнорировать robots.txt
- -F "текст" - строка агента для выгрузки
- --advanced-progressinfo - визуализация шкалы выгрузки страниц и файлов
- --max-rate - максимальная ширина полосы выгрузки файлов
TBD
TBD
Для ряда данных не получается обойти ограничения сайтов, например, на многих порталах государственных закупок в регионах используется навигация с помощью Javascript. А также специальные парсеры необходимы когда мы хотим превратить страницы сайта в базы данных. Пример - сохранение блога Дмитрия Медеведева (https://github.com/infoculture/openkremlin)