Skip to content

How to prepare archives

Ivan Begtin edited this page Dec 20, 2013 · 1 revision

Как готовить архивы официальных сайтов?

Не все официальные сайты дают возможность сохранить всю имеющуюся на них информацию поскольку:

  • используют Javascript навигацию
  • используют AJAX
  • блокируют роботов в robots.txt
  • содержат изолированные (не связанные ссылками) разделы
  • закрывают доступ авторизацией

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

  1. Просмотр основных раздела сайтов, проверка что на сайте используется нормальная ссылочная навигация.
  2. Просмотр файла robots.txt на предмет блокировки отдельных разделов
  3. Проверка объёма сайта в кэше Гугл запросом "site: [domain.name]"

В случае если ограничения не обнаружены возможно сохранение посредством стандартных инструментов. Если обнаружены, то с использованием специализированных скриптов.

Учет и регистрация архивов

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

  • название сайта (или блока сохраняемых ресурсов);
  • ссылка
  • дата архивации
  • наименование организации (если есть)
  • регион (если есть)
  • описание
  • основание для архивации
  • совокупность архивных файлов -- название файла -- размер файла -- формат файла
  • отношения -- понятия в dbpedia.org

Подробности - https://en.wikipedia.org/wiki/Preservation_metadata

Принципы сохранения сайтов

  1. Сайты сохраняются слепками + прорабатываются механизмы инкрементального обновления данных.
  2. Основные инструменты сохранения: wget + httrack
  3. Специальные скрипты разрабатываются по необходимости
  4. Разрабатывается библиотека типовых решений специальных скриптов

Способы сохранения сайтов сайтов (без специализированных средств)

Архивация с помощью wget

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

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 - максимальная ширина полосы выгрузки файлов

Архивация с помощью heritrix

TBD

Архивация с помощью nutch

TBD

Способы сохранения сайтов сайтов (со специализированными средствами)

Написание специальных парсеров

Для ряда данных не получается обойти ограничения сайтов, например, на многих порталах государственных закупок в регионах используется навигация с помощью Javascript. А также специальные парсеры необходимы когда мы хотим превратить страницы сайта в базы данных. Пример - сохранение блога Дмитрия Медеведева (https://github.com/infoculture/openkremlin)