19 июля 2011

Как закачать весь сайт и читать его с диска?

Нашёл с помощью поисковой системы интересный ресурс: курс лекций Мухина Олега Игоревича  "Моделировании систем". Однако прямой заход требует указания пароля (http://www.stratum.ac.ru/textbooks/modelir/)


Но к сожалению авторов ресурса поисковая система даёт ссылки в обход пароля. Просто вот так http://www.stratum.ac.ru/textbooks/modelir/contents.html


Мне интересно почитать на досуге эти лекции (спасибо О.И.Мухину) и вопрос, как скачать весь курс сайта.
У меня OS Linux/Ubuntu следовательно есть консольная программа wget.
Открываю терминал и создаю каталог куда буду закачивать курс лекций:
mkdir ~/mm
cd ~/mm
и следующей командой всё закачиваю:
wget -r -l0 -k http://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 http://www.vasyapupkin.com/

Это эквивалентно -r -N -l inf -nr, поэтому напишу подробнее про эти опции.

Замечу, что при этом ссылки останутся абсолютными - то есть, будут указывать на Интернет-адреса, и удобно просматривать на локальной машине будет затруднительно.

Копирование сайта для локального просмотра:
wget -r -l0 -k http://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 изменится на http://host/bar/img.gif.

Благодаря этому, возможен автономный просмотр сайта и файлов: если загружен файл, на который есть ссылка, то ссылка будет указывать на него, если нет - то ссылка будет указывать на его адрес в интернет (если такой существует). При конвертировании используются относительные ссылки, значит вы сможете переносить загруженный сайт в другую папку, не меняя его структуру.
-------
Источник: черпаю информацию на сайтах посвящённых Ubuntu ( 1 ) ( 2 ) ( 3 )

Комментариев нет:

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

Вы великолепны! Спасибо за ваш комментарий.

Этот блог переехал на другую платформу

Уважаемые читатели моего блога, этот блог переехал на другую платформу. Он так же доступен по старому адресу https://morikoff.ru , но орга...