Архив блогов типа Blogger: делаем локальную копию с помощью HTTrack Website Copier

Архив блога можно сделать по-разному: например, экспортом в XML с помощью встроенной функции Blogger - но это для авторов. А если нужна работающая копия блога вместе с картинками, помещёнными на другом хостинге, простым wget-ом тут точно не обойтись. И тут нам на помощь приходит httrack website copier - это offline browser, который позволяет скачивать сайты целиком. В этом посте привожу небольшое руководство по httrack, в смысле как пользоваться httrack для зеркалирования блогов а-ля Blogspot.


Мои пять копеек, или Как скачать блог на blogger для локального просмотра

Так как с помощью wget (во всяком случае версии 1.10.2) создать полностью работоспособную копию блога на blogspot не получается, будем для этих целей использовать так же входящий в дистрибутив Debian (и не только его) offline броузер под названием httrack website copier, или просто httrack далее.

Насчёт wget - друзья, мне самому он очень нравится, но есть задачи, которые ему не по зубам. Без обид, всем теоретикам от WGET: ребята, прежде, чем делать глобальные выводы, ПОПРОБУЙТЕ СВОИ РЕЦЕПТЫ! Просто скачайте чей-нибудь мало-мальски нагруженный джаваскриптами и картинками на другом хостинге блог на blogspot с помощью wget, потом откройте его offline и Вы увидите большую разницу. Поверьте, это не так просто, и я на 100% солидарен с Андреем Афанасенко и его комментариями в обсуждении этой темы: всё не так просто.
Опций, ключиков и шаманских проклятий к httrack море, но нам надо скачать блог - так что будем использовать и проверять опыт предыдущих поколений. Всё течёт и всё меняется, и на момент последней правки этого поста командная строка, которая позволяет зеркалировать для локального просмотра блог на blogspot выглядит так:
httrack "http://ВАШБЛОГТУТ.blogspot.com/" "+*.css" "+*.js" "+*.jpg" "+*.jpeg" "+*.tiff" "+*.png" "+*.gif" "+*.giff" "+*.swf" "+.ico" -v --disable-security-limits -s0 "-*666*" "-*BlogBacklinkURL*"
Кавычки обязательны. При этом хорошо бы сделать какой-нибудь каталог, в который вы будете это сваливать (например, /home/vasya/ЗЕРКАЛОБЛОГА/ ) и уже внутри этого каталога запускать httrack с вышеупомянутыми заклинаниями.
Во всяком случае для блогов на платформе блоггера эта формула работает: по крайней мере, так удалось полностью скачать блог IceWM and all around полностью, вместе с работающими ссылками на картинки (для просмотра в полный рост) и ссылками в метках, которые позволяют просмотреть все посты с одной меткой.
И ещё. Блоги некоторых особо злостных графоманов (вроде меня) занимают много, много места, так что запаситесь временем и местом на диске. Очень может быть, что сразу, за один раз, блог вытащить не удастся. Конкретно "Записки дебианщика" занимают вместе с картинками и комментариями почти 2Гб. Будучи сжатыми архиватором 7Z с агрессивными настройками, "записки" занимают 107Мб, но распакуются в те же 2Гб. Кстати скачать "Записки дебианщика" одним архивом теперь можно по этой ссылке.


Обновление локальной копии
Для того, чтобы продолжить скачивание большого блога или синхронизировать локальную версию с тем, что есть в Интернете, httrack может обновить скачанный проект. Насколько я понял, для этого нужно добавить к вышеупомянутому заклинанию ключик --update

То есть для обновления уже скачанного блога с blogspot из директории, где находится директория
hts-cache (в ней лежит файл hts-cache/doit.log который содержит все нужные параметры) и пишем:
httrack "http://ВАШБЛОГТУТ.blogspot.com/" "+*.css" "+*.js" "+*.jpg" "+*.jpeg" "+*.tiff" "+*.png" "+*.gif" "+*.giff" "+*.swf" "+.ico" -v --disable-security-limits -s0 "-*666*" "-*BlogBacklinkURL*" --update
И httrack пытается обновить проект. И обновляет его, выкачивая оставшиеся файлы. Кстати, чтобы пропускать файлы со слишком тормозных серверов, можно ещё тайм-аут для httrack поставить поменьше, добавив ключик --timeout 20 после чего тайм-аут будет 20 секунд.

Отмечу так же, что в каталоге hts-cache лежат два больших архива в формате ZIP - так вот, удалить можно только тот из них, который называется old.zip, а new.zip лучше не трогать. Дело в том, что эти файлы содержат информацию, необходимую httrack для обновления скачанного сайта, и если эти файлы удалить, то вы не сможете просто обновить копию (придётся выкачивать всё заново).


Ссылки в тему
Над этой темой бились лучшие умы блоговедения и блоготехники, достижения коих увековечены к примеру в заметке Дмитрия Конищева Создание зеркала сайта и в посте Андрея Афанасенко Архив блога/blogarchive. За что оным умам (а так же всем, кто принимал участие в обсуждениях) низкий поклон и огромная благодарность.
Так же благодарность тов.
vnaum за то, что разыскал в дебрях документации к Блоггеру ссылку на возможность получить все посты Blogger с помощью скриптов на Python.

15 комментариев: |высказаться!| RSS-лента дискуссии.|
Minoru комментирует...

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

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

;)

Oleg комментирует...

Спасибо, очень интересно и познавательно. Надо подумать как теперь это дело использовать для переноса с одного блога на другой (давно хотел перенести свой старый ЖЖ в блогспот, да руки все не доходили).

Sergey комментирует...

Хотел заметить, что получить архив своего блога проще всего из панели управления — Настройки/Основные сведения/Инструменты блога/Экспорт блога. И получаем XML со всем-всем-всем. Хороший XML. Только данные (но в том числе и все настройки-стили), никакого генерируемого HTML.

У меня была мысль, что можно написать скрипт, формирующий по этому XML-архиву документ TeX, вестаемый автоматически для чтения оффлайн — под печать или e-book. Вроде ljbook или blurb, но лучше :-) Дарю идею.

vnaum комментирует...

Ну и мои две копейки:
http://code.google.com/apis/blogger/docs/1.0/developers_guide_python.html#RetrievingWithoutQuery

(python-gdata в дебиане есть)

virens комментирует...

@ Programmaster пишет...
Любопытненько. Передо мной задача зеркалирования блога не вставала, но задумка интересная.
Скоро встанет такая задача и перед тобой, когда постов будет за сотню. Не всегда есть подключение к интернету - вон в МИФИ вторую неделю интернета нету. Хотя он уж и не МИФИ, я нияу... но не суть.

Придраться могу только к отсутствию ссылки вот здесь
Появилося :-)
P.S. А "синхронизовать" пропустил. Стареешь. Хе-хе-хе ;-)

@ Olly Cat пишет...
Надо подумать как теперь это дело использовать для переноса с одного блога на другой (давно хотел перенести свой старый ЖЖ в блогспот, да руки все не доходили).
Таким способом, думаю, вряд ли. Блогспот загружает один здоровенный XML-файл, но я без понятия, как его сформировать.

@ Сергей пишет...
Хотел заметить, что получить архив своего блога проще всего из панели управления — Настройки/Основные сведения/Инструменты блога/Экспорт блога. И получаем XML со всем-всем-всем.
О, а вот и оберфельдфебель Эвиденц в тред нагрянул! :-)) Извини, Сергей, не смог удержаться ;-))

Хороший XML. Только данные (но в том числе и все настройки-стили), никакого генерируемого HTML.
Хорошая девочка Лида, а чем же она хороша?! :-)
Серьёзно, просмотреть его не получается. А раздавать этот файл всем - это у меня и так статьи тырят, а там просто двойники пойдут косяками.

У меня была мысль, что можно написать скрипт, формирующий по этому XML-архиву документ TeX, вестаемый автоматически для чтения оффлайн — под печать или e-book.
Ох ты ёлки-лампочки... Вот до чего хаскель-то доводит, мамочки, поди ж ты... :-)

@vnaum пишет...
Ну и мои две копейки
Это целый рубль, vnaum! Спасибо!

P.S. Прошу простить за немного ироничные ответы, т.к. писал весь день отчёты. После этого сильно пробивает на посмеяться :-)

Sergey комментирует...

Всё бы тебе хиханьки да хаханьки. Отбираю дарёную идею обратно.

virens комментирует...

@ Сергей
Всё бы тебе хиханьки да хаханьки. Отбираю дарёную идею обратно.
Настроение весёлое было. В остальное время мрачный и занудный автор этих строк строчит унылые статьи в научные журналы и баянистые посты в блог :-)

Серьёзно. Сергей, насчёт идеи. Тамошний XML содержит только посты - без оформления и дважаскриптов. Распарсить его у меня не хватит духа, тем более перегнать в ЛаТеХ.

Скрипт "версия для печати" я как-то пытался пристроить, но неудачно.

Собственно, задача была такая, чтобы это локально читать - и httrack был единственный, кто с ней справился. Идея с XML-парсингом выглядит монументально, но мне её не потянуть. То есть всякие титанические проекты типа серия постов "Диплом в латехе" и "графики в гнуплоте" это пожалуйста, но с XML я пас. А за идею спасибо.

Sergey комментирует...

Тамошний XML содержит только посты - без оформления и дважаскриптов. Распарсить его у меня не хватит духа, тем более перегнать в ЛаТеХ.

Ну я не буду говорить, что это легко, но тамошний XML позволяет легко вытащить именно тексты постов. Если не ошибаюсь, это «почти HTML» (у меня — с пустыми строками вместо <p> и прочими поблажками). Толково написанный HTML в ЛаТэХ перегнать можно.

Кстати, вот попробовал. Взял HTML текста твоего поста, кроме подвала, пропустил через tidy и с помощью pandoc из sid сделал так:

$ pandoc -f html -t latex -s blogpost_.html | sed '2i\\\\usepackage\[T2A\]{fontenc}' > blogpost_.tex
$ pdflatex blogpost_.tex

В общем, ничего не делал, только русский fontenc добавил.

Результат: blogpost_.pdf".

В общем, всё не так уж плохо. На практике, конечно, будут тонкости (например, конвертация gif-ов в png/jpg, выкачивание картинок высокого разрешения, обработка своих стилей, таблицы, наверное). Однако и так, на автомате, впечатляет.

Это я pandoc рекламирую, если кто не понял :-)

Vladimir Khodakov комментирует...

интересная заметка, может, мне и понадобится когда-нибудь! =)

Спасибо =)

// а не появится ли теперь у блоггеров новая "фаллометрия" -- чей блог больше весит?

AccessD комментирует...

Большое спасибо автору!!! я как раз на днях задумался над бекапом блога )))

Анонимный комментирует...

вопрос не по теме , почему при нажатии на ссылки в МЕТКах ПОСТОВ(оффлайн версия блога) они не работают , а при открытие вместо названий кракозябы =( скачал несколько раз пробывал и всё время одно и тоже =(

locke314 комментирует...

Спасибо большое за статью, очень своевременно! Даже сделал к себе небольшую копипасту.
Воспользовался предложенным вами рецептом, порадовался неплохому результату, однако есть одно "но". В локальной копии не работает выборка сообщений по определённому тэгу, если это кириллический тэг. С тэгами на латинице всё работает "как надо", но кириллица в тэгах сохранилась на диск в кодировке cp-1252, и теперь Firefox говорит, что "не может найти файл /home/op/documents/02doc_notes/blogarchive/locke314.blogspot.com/search/label/подÑ�лушано.html."
Не подскажете, как бы эту неприятность обойти?

virens комментирует...

@Сергей, 23.12.2009 16:56:00

Ну я не буду говорить, что это легко, но тамошний XML позволяет легко вытащить именно тексты постов.
Серж, тексты постов у меня-то как раз есть :-) Однако в последнее время я обленился так, что обновлять их лень. Делаю экспорт блога и сохраняю в SVN.

Результат: blogpost_.pdf".
Вот это круто! Попробуем-с...

У меня тоже была мысль сделать что-то вроде хендбука для Дебиан (по мотивам наиболее часто забываемых мною вещей) и распечатать в свой ежедневник. На досуге (когда он у меня будет, интересно? :-)) попробую сообразить что-то.

Это я pandoc рекламирую, если кто не понял :-)
Этот тонкий намёк я уловил, да :-))


@ Valdos the Fat Troll
а не появится ли теперь у блоггеров новая "фаллометрия" -- чей блог больше весит?
Не думаю. По крайней мере мне это точно не грозит :-)


@ AccessD, 27.12.2009 23:08:00
Большое спасибо автору!!! я как раз на днях задумался над бекапом блога )))
Пожалуйста, хотя это спасибо Андрею Афанасенко и Дмитрию Конищеву.

И потом, это не бекап блога, а только его локальная копия.


@ eshelon, 29.12.2009 15:17:00
вопрос не по теме , почему при нажатии на ссылки в МЕТКах ПОСТОВ(оффлайн версия блога) они не работают
Вопрос-то как раз по теме. Работают не все метки, что обидно. Причина этого выясняется.


@locke314, 01.01.2010 22:05:00
Воспользовался предложенным вами рецептом, порадовался неплохому результату, однако есть одно "но". В локальной копии не работает выборка сообщений по определённому тэгу, если это кириллический тэг.
Есть такое НО. Я попробую связаться с авторами и это дело прояснить. Там как обычно - для латинницы работает, с кириллицей всё веселее. Причём работают короткие теги (у меня примерно половина нормально открывается).

Не подскажете, как бы эту неприятность обойти?
Пока не знаю сам, как это обойти. Но постараюсь выяснить. Оставайтесь на этой волне - пост может обновиться на эту тему.

fealza комментирует...

Спасибо! Как раз то, что нужно было ))

Анонимный комментирует...

Спасибо. Скоро пригодится. Полезная статья.

Отправить комментарий

Подписаться на RSS-ленту комментариев к этому посту.