leonder 11.02.2010 05:46
How-to`s — Как скачать целиком любой сайт (скрипт siteget)
Мама у меня работает преподавателем в детском кружке, в последнее время увлеклась изготовлением кукол, и в свободное время ищет в Интернете информацию соответствующего характера. Больше всего ей нужны картинки уже готовых кукол, для примеров. Она стала часто попадать на сайты, где есть раздел "каталог", а там бывает достаточно много моделей. Основная проблема в том, что вручную сохранять изображения, например, щелкнув по ним и выбрав в меню пункт "сохранить как..." - крайне неудобно и долго.Была поставлена и решена задача: быстро скачать все изображения с определенного сайта (или его раздела), которая тут же стала чуть более глобальной - скачать сайт целиком. С помощью google, по этой ссылке я нашел простое и элегантное решение:
Суть:
Создается скрипт (то есть сценарий, небольшая "программа"), который скачивает сайт целиком, используя стандартную, входящую в состав операционной системы программу wget. Сценарий делается исполняемым (изначально это простой текстовый файл), сохраняется в специальное место и в дальнейшем используется.
Расскажу, как это сделал я и рекомендую делать Вам, если у Вас ОС linux, конечно:
Открыл эмулятор терминала.
Выполнил следующую команду, чтобы создать в домашнем каталоге специальный каталог для собственных скриптов.
mkdir ~/bin
Выполнил следующую команду, чтобы создать новый файл в текстовом редакторе (вместо nano можно вписать другой):
nano ~/bin/siteget
Вставил туда следующий код, который собственно и будет выполнять всю работу:
Большая часть которого, как видно - комментарии и описание.
Сохранив изменения (ctrl+O в nano) и выйдя из редактора (ctrl+X в nano), выполнил следующую команду в консоли, чтобы сделать скрипт исполняемым:
chmod a+x ~/bin/siteget
Теперь же, чтобы сохранить на свой диск сайт целиком, достаточно выполнить в консоли этот скрипт. Поскольку у родителей user-friendly KDE4, я научил маму делать это следующим образом (и, на всякий случай, инструкцию написал карандашом на листке):
Скопировать в буфер обмена из адресной строки браузера адрес сайта (его корневую, главную страницу)
Запустить Dolphin (файловый менеджер), войти в специально созданный ранее каталог "Домашняя папка/Загрузки"
Нажать клавишу F4, чтобы вызвать встроенную в Dolphin консоль
Набрать "siteget ", вставить из буфера обмена адрес сайта, нажать
Дождаться, пока скрипт закончит и сообщит о результатах. В текущем каталоге ("Домашняя папка/Загрузки") будет создан каталог, одноименный с адресом сайта. Чтобы просмотреть локальную копию - следует войти в него и открыть в браузере файл index.html
Если бы я написал, "скачать исходники сайта", то название было бы не очень. А простому пользователю, вроде моей мамы, для которой это делалось, глубоко безразлично, что там на стороне сервера - статичные страницы или динамические страницы, главное чтоб работало.
Для некоторых это актуально. Комментарий вот только чего на английском? Я то по английский читаю, а вот некоторые нет :).
Совершенно непонятно зачем вообще этот скрипт, если задача выполняется одной командой. Гораздо правильней в таком случае прописать для неё алиас в ~/.basch.rc, если руками "вломы" каждый раз набирать. И кстати, да. Shtsh прав. Сейчас большинство сайтов динамические...
Не совсем понял, что мешает использовать WebHTTrack? Отлично скачивает сайты целиком.
А вот как настроить так, чтобы скачивался только определённый раздел сайта (например, отдельная статья с Хабра плюс все странички-примеры по ссылкам, но НЕ весь Хабр) - я так и не разобрался. :-(
А вот как настроить так, чтобы скачивался только определённый раздел сайта (например, отдельная статья с Хабра плюс все странички-примеры по ссылкам, но НЕ весь Хабр) - я так и не разобрался. :-(
Так no-parents этого не делает?
Или может покомбинировать ключи
-r (рекурсивно)
и
-l (максимальный уровень рекурсии)
Или может покомбинировать ключи
-r (рекурсивно)
и
-l (максимальный уровень рекурсии)
Иногда хочется скачать, например. только картинки с сайта, причем превышающие заданный размер. Как такое реализовать? Или наоборот, проигнорировать типы файлов при скачивании или еще какие-то критерии. В общем, фильтры наложить. Есть соображения?
Это нужно читать man wget:
Recursive Accept/Reject Options
-A acclist --accept acclist
-R rejlist --reject rejlist
Specify comma-separated lists of file name suffixes or patterns to accept or reject. Note that if any of the wildcard characters, *, ?, < or >, appear in an element of acclist or rejlist, it
will be treated as a pattern, rather than a suffix.
Recursive Accept/Reject Options
-A acclist --accept acclist
-R rejlist --reject rejlist
Specify comma-separated lists of file name suffixes or patterns to accept or reject. Note that if any of the wildcard characters, *, ?, < or >, appear in an element of acclist or rejlist, it
will be treated as a pattern, rather than a suffix.
Пример:
wget -r --accept=jpg,jpeg www.xyz.org
Только нужно уровень рекурсии ограничить, например:
wget -l 5 -r --accept=jpg,jpeg www.xyz.org
wget -r --accept=jpg,jpeg www.xyz.org
Только нужно уровень рекурсии ограничить, например:
wget -l 5 -r --accept=jpg,jpeg www.xyz.org
Ой, блин... И еще...:)
~ обозначает домашний каталог, а ты потом пишешь nаno /bin... Во-первых, без sudo почему-то, во-вторых - это ж совсем другой файл. Тогда уж nаno ~/bin/siteget. То же и chmod в конце. Кстати, создавать файл не обязательно. Ты можешь сразу написать nano название_файла.
Извиняюсь за отсутствие оформления, пишу с телефона.
~ обозначает домашний каталог, а ты потом пишешь nаno /bin... Во-первых, без sudo почему-то, во-вторых - это ж совсем другой файл. Тогда уж nаno ~/bin/siteget. То же и chmod в конце. Кстати, создавать файл не обязательно. Ты можешь сразу написать nano название_файла.
Извиняюсь за отсутствие оформления, пишу с телефона.
sudo не нужно, всё ведь в пользовательском окружении, а с /usr/bin ошибся. Оригинал заметки был как бы многопользовательский, поэтому с sudo и в /usr/bin. Не всё заметил при редактировании, спасибо.
Я когда-то делал резервную копию ЖЖ:
wget -nc -r -k -p -X2007,2008,2009,data,tag,2010 -R"index.html*tag*,*reply*,*thread*" --no-parent http://***.livejournal.com
wget -nc -r -k -p -X2007,2008,2009,data,tag,2010 -R"index.html*tag*,*reply*,*thread*" --no-parent http://***.livejournal.com
Так держать.
Можно еще облегчить маме жизнь, сделать процесс более GUI-шным.
1 вариант. Создать действие в klipper. Вот нашел статью для 3-х кед, но идея думаю будет понятна.
2 вариант. Использовать kdialog, и опционально xclip.
Можно еще облегчить маме жизнь, сделать процесс более GUI-шным.
1 вариант. Создать действие в klipper. Вот нашел статью для 3-х кед, но идея думаю будет понятна.
2 вариант. Использовать kdialog, и опционально xclip.
Еще, если мама смотрит страницы в konqueror-е, то можно добавить пункт в выпадающее меню.
Создай файл ~/.kde/share/kde4/services/ServiceMenus/downloadall.desktop
Теперь если в конке кликнуть правой кнопкой по ссылке, выпадет меню и в подменю "Действия" появиться пункт "Сохранить весь сайт".
К сожалению я не знаю какой ServiceTypes соответствует url-ам(кто знает поправьте), поэтому указал все.
Создай файл ~/.kde/share/kde4/services/ServiceMenus/downloadall.desktop
Exec=~/bin/siteget %u
Name=Download site
Name=Сохранить весь сайт
Icon=download
Actions=downloadAll;
ServiceTypes=all/allfiles
Type=Service
X-KDE-ServiceTypes=KonqPopupMenu/Plugin,
Теперь если в конке кликнуть правой кнопкой по ссылке, выпадет меню и в подменю "Действия" появиться пункт "Сохранить весь сайт".
К сожалению я не знаю какой ServiceTypes соответствует url-ам(кто знает поправьте), поэтому указал все.
Браузер там - Iceweasel (ну, считай Firefox), поэтому - это не к моей маме.
ScrapBook и иже - тоже стороной. Человек в возрасте и предпочитает инструкции (скрипты;-), написанные от руки, сама себе "шпаргалки" пишет по использованию программ. Я, перед тем как в другой город уехать, снабдил такими бумажками, как мог. Порядок действий для выполнения определенных задач в GIMP, OOWriter, Dolphin, KDE в целом... Интерфейс даже самой простой но новой(!) программы по-умолчанию отпугивает. Лучше уж инструкции.
ScrapBook и иже - тоже стороной. Человек в возрасте и предпочитает инструкции (скрипты;-), написанные от руки, сама себе "шпаргалки" пишет по использованию программ. Я, перед тем как в другой город уехать, снабдил такими бумажками, как мог. Порядок действий для выполнения определенных задач в GIMP, OOWriter, Dolphin, KDE в целом... Интерфейс даже самой простой но новой(!) программы по-умолчанию отпугивает. Лучше уж инструкции.
Это я к тому, что название не очень