Сохранение веб-страниц: краткий обзор для линуксоида.
Зачем?
Еще совсем недавно, каких-то семь лет назад, я подключался к интернету строго по необходимости, при этом посматривая на окошечко в правом углу монитора, где специальная программулька выводила текущий трафик сразу в рублях и копейках... В ту пору сохранение разных нужных сведений (спецификаций, туториалов, разных учебных и справочных материалов и т.п.) у себя на компьютере было просто необходимостью.
Но время бежит быстро, и широкополосный "кабель до дома", а то и Wi-Fi стали обыденностью. Пусть и не слишком дешевой, но вполне доступной. И движение информации изменилось на обратное: зачем мне хранить что-то важное у себя на компе, когда у меня, с моей безлимиткой на 80 – 100 Мб/сек, богатый выбор облачных хранилищ? А на отдельную страницу довольно и закладки.
Однако, во-1-х, так дело обстоит в областных-краевых и (отчасти и с оговорками) районных центрах, да и то, по-видимому, не везде, а это еще далеко не вся Россия, что бы там ни думали внутри Садового кольца. А во-2-х, нужная страница может просто исчезнуть по разным причинам: то ли автор перестал поддерживать проект, то ли какому-нибудь роскомдозору опять что-то померещилось.
Но оставим эту скользкую почву, и посмотрим на сабж по существу.
А по существу получается так, что хранить веб-страницы у себя на компьютере до сих пор нужно многим, и, думаю, будет нужно всегда. Для работы, учебы, самообразования, – это лишь очевидный минимум причин.
Как?
Строго говоря, прежде чем переходить к обзору возможных способов, надо было бы обсудить вопрос "Что именно?", ответ на который может сильно повлиять на выбор. Скажем, если нужно сохранить только текст, без форматирования (или с простейшим форматированием), без разметки, картинок и иного медиаконтента – это одно. А вот если подавай нам страницу со всем, что на ней есть, включая javascript-примочки и даже flash, то это уже совсем другое. Но подумав, автор решил, что легче определиться с этим в процессе знакомства с тем или иным инструментом-способом, чем разводить и дальше теоретико-философскую тягомотину.
Сохранить как...
Firefox: Считается самым простым способом, что не вполне заслуженно (сохранение с помощью дополнения ScrapBook для Firefox'а, как будет показано далее, еще проще). Скорее его можно назвать самым примитивным. Никаких опций и настроек не имеет, можно лишь задать место сохранения. Сохраняет файл html с именем, взятым из тега title, а все остальные удобства – во дворе файлы – в папке с тем же именем.
По сравнению с другими способами не имеет никаких преимуществ. Крупный недостаток – сохраняет файлы и папки с пробелами в именах.
Формат mht
Формат mht (MHTML) весьма удобен, веб-страница со всеми своими потрохами сохраняется в одном файле. Но у него есть и недостатки.
- Немаленький размер. Хотя, как правило, страница в mht меньше (иногда до двух раз), чем сохраненная в Scrapbook'е, но обычно заметно больше, чем в pdf.
- Теряется возможность работать с отдельными файлами страницы: css, медиаконтентом и т.д.
Кроссбраузерность хорошая, практически во всех популярных браузерах есть поддержка формата, либо нативная, либо расширениями. Причем второе зачастую лучше, поскольку дает настроить опции сохранения. Например, дополнение Firefox'a UnMHT позволяет, кроме многих прочих настроек, задать замены в имени файла и тем самым избавиться от пробелов и знаков препинания в именах, чем грешат Opera и Chrome.

В Опере, как уже сказано, mht поддерживается нативно и по дефолту, в Хромом следует пройти на сакральную страницу chrome://flags
и там включить его поддержку.
Качество сохраненного, как правило, не вызывает нареканий. В Firefox, в зависимости от настроек, может даже пытаться сохранить Java/Flash-апплеты и HTML5 VIDEO/AUDIO (с понятными последствиями для размера конечного файла). Впрочем, это можно запретить в настройках.
Формат pdf
Линуксоиды, насколько я знаю, не испытывают к pdf особо теплых чувств. Да и с чего бы? Даже в винде многие недолюбливают тяжеловесного монстра Adobe Acrobat, и кое-кто называет его Адобе Кашалот за его тяжелое поведение даже на неслабых машинах. К тому же он сильно проприетарный. И хотя в Linux есть очень хорошая читалка pdf (evince), создание файлов в этом формате затруднено.
Но нельзя сбрасывать со счета его достоинства, и прежде всего кроссплатформенность (заложенную в формат, так сказать, генетически) и широкое распространение во всем мире. Кроме того, конвертирование в pdf дает наименьший по размеру выходной файл по сравнению со всеми остальными способами (правда, экономия достигается за счет определенных потерь, о чем ниже). Поэтому вкратце рассмотрим вопрос, какими способами можно сохранить веб-страницу в pdf.
Первый, самый простой и самый плохой: в Firefox Файл → Печать → Печатать в файл. На выходе имеем "деревянный" результат, где никакие ссылки (и, главное, внутренняя навигация по якорям) не работают.
Виртуальная печать в pdf в Chrome гораздо лучше и, кажется, не уступает онлайн- или офлайн-конвертации, к которым и перейдем.
В сети немало онлайн-конверторов, в том числе совершенно бесплатных и вполне себе качественных. Вот только два для примера: online-convert.com и web2pdfconvert.
Из доступных и не слишком сложных офлайн-средств преобразования в pdf мне известна лишь одна программка wkhtmltopdf. Она есть в репах Ubuntu Trusty (и, соответственно, Linux Mint 17), где хоть и устаревшая, но вполне рабочая версия, которая, имхо, работает не хуже свежей, которую можно взять здесь.. По качеству сравнима с онлайн-конвертером web2pdfconvert.com и несколько уступает online-convert.com.
В заключение должен сказать, что pdf как формат для сохранения веб-страниц имеет серьезные недостатки, если речь идет о страницах со сложным форматированием, интерактивными элементами и различными семантически важными javascript-штуками, вроде спойлеров и т.п. Правда, сейчас стремительно развиваются новые средства, связанные с интеграцией формата в веб-технологии, и, возможно, положение скоро изменится, но пока что в моем "имхо-рейтинге" pdf занимает лишь предпоследнее место и используется редко.
ScrapBook
Это дополнение Firefox заслуженно является одним из популярнейших. Недаром родилось несколько своеобразных "форков" на его основе (сейчас, например, выложен на альфа-тестирование ScrapBook Plus 2), но я буду говорить только о "классическом" ScrapBook, созданном Gomita.
Назначение ScrapBook полностью совпадает с темой данной заметки: сохранение веб-страниц и удобная организация сохраненного. И своему назначению отвечает целиком и полностью. Он удобен, прост в применении, и при этом имеет развитые средства настройки и управления. Для тех, кто с ним еще незнаком, скажу несколько слов, гм, с картинками.
Вся работа с аддоном совершается в боковой панели, которую можно открыть из меню или хоткеем Alt + K. Вверху имеется строка поиска, под ней – небольшой тулбар, в недрах которого скрыты большие возможности.
Настройки (которые в меню браузера Инструменты → Дополнения) столь же хорошо продуманы и организованы:
Среди настроек, с которыми легко разберется любой юзер, отмечу лишь одну: Организация. Если, как показано на скрине выше, включено "Использовать Multi-ScrapBook", то мы получим возможность сохранять веб-страницы в заданном нами месте и объединять их в тематические альбомы, которых может быть сколько угодно. Верите ли, несмотря на все "чистки" и выбраковки, за шесть лет у меня их набралось три десятка с лишним!
Сохранить веб-страницу в ScrapBook очень легко, и самый простой способ – схватить мышой за шиворот нужную вкладку и перетащить ее на панель. Так же, тасканием, можно перемещать в панели уже сохраненные страницы, перекладывая их в нужные папки. Процесс иллюстрируется нижеследующими скринами, третий из которых демонстрирует, чтó можно сделать с сохраненной страницей из контекстного меню по ПКМ:
Внутренняя организация каждого альбома тоже проста: каталоги backup, data и файлы folders.txt и scrapbook.rdf. Сохраненные страницы находятся в каталоге data, каждая в своей папке, имя которой состоит из цифр, означающих время сохранения, например, 20141225160327.
Впрочем, полный путь отображается в адресной строке браузера при открытии сохраненной страницы. А кроме того, внизу появляется дополнительная панель, из которой возможен еще целый ряд манипуляций с сохраненной страницей: окошко для быстрого переименования, текстовое поле для комментария, маркер, создание быстрого примечания, инструмент удаления выделенного фрагмента (можно также удалить чохом все теги script и iframe), DOM-редактор, позволяющий мышой удалять ненужные блоки вроде сайдбара или футера. И все эти действия можно сохранить или отменить расположенными тут же кнопками. И кто теперь посмеет сказать, что у ScrapBook'а хилый функционал?!
Да есть ли у него вообще недостатки?
Конечно, есть. И главный, самый (а по большому счету, единственный) серьезный – размер сохраненной страницы. Он в среднем в 1,5-2 раза больше, чем размер mht-файла, и уж тем более сильно больше pdf. Но достоинства настолько перевешивают, что я считаю это даже не недостатком, а как бы накладными расходами, поскольку уже давно понял, что в мире нет и не может быть ничего совершенного.
Аналог ScrapBook есть в Chrome (так и называется: Chrome ScrapBook), но о нем я сказать ничего не могу: не пользовался. По слухам – не айс.
Пару слов в конце.
Естественно, я назвал далеко не все возможные способы сохранения веб-страниц и инструменты для этого (например, не стал упоминать Zotero из сложных или "Save Text to File" из простых аддонов Firefox'а). В конце концов, и wget можно приспособить к этому делу, если хорошенько помозговать. Но я и не ставил такой цели. Нужда в сохранении обычно возникает внезапно, по ходу жизни, и тут важен приемлемый баланс между простотой, качеством и назначением сохраняемого. В этом смысле альтернатив приведенным выше способам пока что, имхо, не видно.
2014-12-25 в 17:50:15
Вери гран катта рахмат за обзор.
В силу специфики потребностей сохраняю из links'а (и только то, что в links'е корректно выводится).
Но Вы заставили меня задуматься над более прогрессивными способами
2014-12-25 в 18:40:05
Конечно, всё определяется целями сохранения. У меня это веб-кодинг, растровые редакторы (а в последнее время и векторные, svg наступает), -- тут без картинок и css не обойдешься. А для сохранения plain-текста, в том числе для последующего использования в скриптах, прекрасно подходят и консольные браузеры. Я по привычке пользуюсь не links, а lynx (lynx-cur), как и бот гугла
2014-12-25 в 19:57:59
> всё определяется целями сохранения
да, для меня -текстовая документация на всякую экзотику, которая типа интересно, но вот прямо сейчас не актуально
а потом, когда вдруг понадобится, хрен вспомнишь, где видел...
> Я по привычке пользуюсь не links, а lynx (lynx-cur)
Да, чисто вопрос привычки.И немножко религии - ну нэ лублу я всё, к чему RMS приложил хоть свою левую пятку. Хотя обратно же - нэ лублу первично, а RMS -вторично.