Закачиваем весь сайт на диск
Нашёл с помощью поисковой системы интересный ресурс: курс лекций Мухина Олега Игоревича «Моделировании систем». Однако прямой заход требует указания пароля (https://www.stratum.ac.ru/textbooks/modelir/)
Но к сожалению авторов ресурса поисковая система даёт ссылки в обход пароля. Просто вот так https://www.stratum.ac.ru/textbooks/modelir/contents.html
Мне интересно почитать на досуге эти лекции (спасибо О.И.Мухину) и вопрос, как скачать весь курс сайта.
У меня OS Linux/Ubuntu следовательно есть консольная программа wget.
Открываю терминал и создаю каталог куда буду закачивать курс лекций:
mkdir ~/mm
cd ~/mm
и следующей командой всё закачиваю:
wget -r -l0 -k https://www.stratum.ac.ru/textbooks/modelir/contents.html
теперь чтобы почитать запускаю в браузере файл:
~/mm/www.stratum.ac.ru/textbooks/modelir/contents.html
все ссылки работают корректно, так как wget всё исправил при загрузке
И ниже идут записки на память
Нужно просто скачать файл и/или продолжить закачку, которая оборвалась. Это очень и очень легко сделать, не запуская GUIёвых программ, а открыв только терминалку.
Просто скачать файл wget-ом
wget ftp://vasya.pupkin.com/film.avi
Это было не трудно, так ведь? Ещё вариант: часть файла скачана, закачка оборвалась.
Для продолжения файла закачки пишем:
wget -c ftp://vasya.pupkin.com/film.avi
или
wget -continue ftp://vasya.pupkin.com/film.avi
Вместо -с можно написать -continue, так как каждый ключ имеет короткую и длинную формы: длинные ключи проще запомнить, но дольше писать. Можно легко смешивать различные формы написания.
Чтобы выкачать файлы из списка, содержащего прямые ссылки:
wget -i pupkinlist
или
wget -input-file=pupkinlist
Здесь указывается только файл, в котором содержатся ссылки. Файл может так же быть HTML-страницей, в которой есть ссылки. Они будут выкачаны указанной выше командой.
Использование а-ля «Teleport Pro for Linux»
При скачивании веб-сайтов возможностей больше, и поэтому требуется больше ключей. Опять-таки, запоминать их все не обязательно, можно сделать скрипт (а лучше несколько — под разные случаи) и вызывать их.
Так вот, если имеется веб-сайт, и хотелось бы иметь его локальную копию на компьютере, чтобы, отключившись от сети, можно было неторопясь его почитать.
Зеркалирование сайтов на локальную машину:
wget -m https://www.vasyapupkin.com/
Это эквивалентно -r -N -l inf -nr, поэтому напишу подробнее про эти опции.
Замечу, что при этом ссылки останутся абсолютными — то есть, будут указывать на Интернет-адреса, и удобно просматривать на локальной машине будет затруднительно.
Копирование сайта для локального просмотра:
wget -r -l0 -k https://www.vasyapupkin.com/
При этом будет включена рекурсивная выгрузка (ключ -r, —recursive),
-np --no-parent
Не подниматься выше начального адреса при рекурсивной загрузке.
Для этого в wget имеется большое количество полезных опций — побольше, чем у телепорта флажков. Будучи завёрнутым в скрипт teleport и положенным на видное место (указанное в PATH), имеем удобство применения и богатство настроек.
-r | -recursive
Включить рекурсивный просмотр каталогов и подкаталогов на удал©нном сервере.
-l depth | -level=depth
Определить максимальную глубину рекурсии равной depth при просмотре каталогов на удалённом сервере. По умолчанию depth=5.
-np | -no-parent
Не переходить в родительский каталог во время поиска файлов. Это очень полезное свойство, поскольку оно гарантирует, что будут копироваться только те файлы, которые расположены ниже определённой иерархии.
-A acclist | -accept acclist
-R rejlist | -reject rejlist
Определить разделённые запятыми списки суффиксов имён файлов или шаблонов, чтобы принять или отвергнуть копирование файлов. Подробнее смотрите раздел 13.4.3.
-k | -convert-links
Превратить абсолютные линки в HTML документе в относительные линки. Преобразованию подвергнутся только те линки, которые указывают на реально загруженные страницы; остальные не будут преобразовываться.
Заметим, что лишь в конце работы Wget сможет узнать какие линки были реально загружены. Следовательно, лишь в конце работы Wget будет выполняться окончательное преобразование.
http-user=user
-http-passwd=password
определить имя пользователя как user и пароль как password на HTTP сервере. В соответствии с типом обращения, Wget будет кодировать эти параметры с использованием одной из схем кодирования: basic (не секретная) и digest.
-A acclist --accept acclist -R rejlist --reject rejlist
Список имен файлов, разделенных запятыми, которые следует или не следует загружать. Разрешается задание имен файлов по маске.
-H --span-hosts
Разрешает посещать любые сервера, на которые есть ссылка.
-p --page-requisites
Загружать все файлы, которые нужны для отображения страниц HTML. Например: рисунки, звук, каскадные стили.
По умолчанию такие файлы не загружаются. Параметры -r и -l, указанные вместе могут помочь, но т.к. Wget не различает внешние и внутренние документы, то нет гарантии, что загрузится все требуемое.
-k --convert-links
После завершения загрузки конвертировать ссылки в документе для просмотра в автономном режиме. Это касается не только видимых ссылок на другие документы, а ссылок на все внешние локальные файлы.
Каждая ссылка изменяется одним из двух способов:
* Ссылки на файлы, загруженные Wget изменяются на соответствующие относительные ссылки.
Например: если загруженный файл /foo/doc.html, то ссылка на также загруженный файл /bar/img.gif будет выглядеть, как ../bar/img.gif. Этот способ работает, если есть видимое соотношение между папками одного и другого файла.
* Ссылки на файлы, не загруженные Wget будут изменены на абсолютные адреса этих файлов на удаленном сервере.
Например: если загруженный файл /foo/doc.html содержит ссылку на /bar/img.gif (или на ../bar/img.gif), то ссылка в файле doc.html изменится на https://host/bar/img.gif.
Благодаря этому, возможен автономный просмотр сайта и файлов: если загружен файл, на который есть ссылка, то ссылка будет указывать на него, если нет — то ссылка будет указывать на его адрес в интернет (если такой существует). При конвертировании используются относительные ссылки, значит вы сможете переносить загруженный сайт в другую папку, не меняя его структуру.