• Записи 162
  • Теги 66
  • Комментарии 330

Компьютерное

Как скачать весь сайт или используем WGet

Выкачивал сегодня копию своего старого профблога с помощью утилиты wget и решил рассказать о ней подробнее.


С помощью WGet можно качать сайты целиком, отдельные файлы или набор файлов по списку. Но отличие от других оффлайн-броузеров (например, Teleport Pro), WGet работает из командной строки. Сначала это кажется неудобным, но это неудобство легко решается с помощью простейшего BAT-файла. Например, я для себя сделал вот такой:


@echo off
set /p URL=Enter URL (with no http://):
if "%URL%"=="" goto error
D:\Soft\WGet\wget.exe -r -l0 -k -np -p -nv -nH -E -t 4 -N -c http://%URL% -P D:\Sites\
goto end
:error
echo No site specified!
:end
pause

Этот скрипт запросит имя сайта при запуске и затем скачает его в каталог D:\Sites\имя_сайта.


Некоторые наиболее полезные при скачивании сайта ключи wget:



  • -r — рекурсивное скачивание: скачается не только указанная страница сайта (т.е. главная), но и все, на которые она ссылается.

  • -l0 — глубина рекурсии (0 — неограниченная).

  • -k — коррекция гиперссылок так, чтобы они стали локальными.

  • -np — не подниматься выше указанного каталога (полезно при скачивании одного раздела сайта).

  • -p — загрузка вспомогательных элементов для отображения Web-страницы: CSS, JavaScript и т.п. Без данного ключа будет скачиваться только HTML.

  • -nv — подавление выдачи части сообщений.

  • -hH — не создавать каталог с именем хоста.

  • -E — сохранять файлы с расширением HTML.

  • -N — учет временной метки (заголовка Last-Modified): скачиваются только те файлы, которые обновились.

  • -t — количество попыток скачивания файла в случае возникновения ошибки.

  • -P — каталог, в который следует сохранить сайт.

  • -A — скачивать файлы, соответствующие шаблону. Шаблон может быть либо частью имени файла, либо задаваться с помощью символа *. Так, например, скачать все файлы с расширением .gif можно либо с помощью -A .gif, либо -A *.gif.

  • -R — пропускать файлы, соответствующие шаблону. Шаблоны задаются так же, как для опции -A.


Кроме скачивания сайтов, wget имеет еще несколько применений. Самое простое и очевидное — закачивать дистрибутив какой-либо программы напрямую, без предварительной выгрузки на свой компьютер и закачку с него по FTP (для этого нужен доступ к командной строке на сервере). Делается это командой wget -c URL_файла (ключ -c означает скачивание с докачкой).


Так же можно использовать wget в отладочных целях или для автоматизации каких-либо действий скриптами, например, мониторинга удаленного сайта. Например, с помощью него можно посылать дополнительные заголовки в запросе, просматривать ответы сервера, отправлять POST-запросы и т.д. Тут полезными окажутся такие ключи:



  • -S — вывод ответа сервера.

  • --spider — только получение ответа сервера, без сохранения в файл.

  • --header=строка_заголовка — добавить в заголовок запроса указанную строку.

  • --load-cookies и --save-cookies — загрузка и сохранение cookies в файл.

  • --post-data и --post-file — отправка строки данных или данных из файла POST-запросом.


Получить wget очень легко: в Linux он сразу же устанавливается почти во всех дистрибутивах, для Windows его можно скачать по адресу http://users.ugent.be/~bpuype/wget/. Установки он не требует, поэтому можно носить с собой на флешке или любом другом носителе.

27 комментариев:

Нет
Юрий
0

Спасибо, классная софтинка. Ничего лишнего ))
На Win7 64-битной работает отлично. Сделал себе такой же батник.

Нет
Александр
0

Спасибо, очень полезно. Не разобрался где в Teleport Pro установить произвольные кукисы, через wget оказалось проще...)

Нет
Максим М.
0

Вот имхо лучший вариант батника,
кладете батник, wget.exe в одну любую папку, запускаете батник, вводите сайт, в этой же папке создается папка sites, а в ней папка с названием сайта и собственно его содержимым.



@echo off
set /p URL=Enter URL (with no http://):
if "%URL%"=="" goto error
wget.exe -r -l0 -k -np -p -nv -nH -E -t 4 -N -c http://%URL% -P Sites\%URL%
goto end
:error
echo No site specified!
:end
pause

Нет
Сергей
0

Подскажите пожалуйста, а сайт с флэш WGet скачает? Если да, то указанные ключи подходят, или нужно что-либо убрать? Очень нужен сайт для дочери, английский язык
http://www.starfall.com/
там как то флэш с pdf связан.

4X_Pro
0

Полагаю, что нет. Или даже если и скачает, то только основной SWF-файл. А если он использует какие-то вспомогательные ресурсы (как это часто делают тяжелые Flash-приложения), то они точно не скачаются.
Вам скорее нужно поставить какой-нибудь локальный Proxy-сервер (например, CoolProxy), подключиться через него и обойти весь сайт вручную, чтобы он сохранился в кеше Proxy-сервера.

Нет
Анатолий
0

Здравствуйте подскажите как скачать книгу отсканированную с сайта, где каждая страница книги представлена в формате tiff. На сайте можно только постранично скачивать (800 стр.) Какие ключи для этого нужно в wget64 ? Спасибо.

4X_Pro
0

Если страницы связаны между собой ссылками типа "следующая", то, по идее, можно просто указать wgetом на первую из них.
Если нет, но файлы страницами пронумерованы последовательно, то можно написать на любом скриптовом языке (том же WSH, например), который просто в цикле запустит wget нужное количество раз.
Т.е. будет что-то вроде
var i=0;
for (i=1; i<число_страниц; i++) {
WShell.execute('wget http://some.site/book/page'+i+'.tiff');
}
(Это только общая идея, а не готовый к использованию код).

Нет
Александр
0

Пишет ошибку файл libeay32.dll найден. Пробовал закидывать libeay32.dll в system32 и в bin - ошибка входа. Пробовал на разных ос

4X_Pro
0

Вопрос: а в разрядности не может быть проблема? Т.е. к 64-битному wgetу делается попытка прикрутить 32-битный libeay32.dll или наоборот. Попробуйте еще в SysWOW64 эту dll положить.

Нет
Игорь
0

День добрый. Требуется помощь. Не могу разобраться как скачать с сайта http://www.universitys.ru, а именно с директории http://www.universitys.ru/storage/ все pdf файлы. Можно, пожалуйста, батник, а то руки, видимо, не под то заточены и никак не хватает мозга написать..

4X_Pro
0

По этому адресу выдается ошибка 404.

Нет
Vladimir
0

Есть ли какая-нибудь возможность восстановить сайт из кэша Googlа (например, скрипт)

4X_Pro
0

Я таких скриптов не видел.

Нет
7Scorpion
0

Здравствуйте. Скачал сайт с коррекцией гиперссылок (.php расширение изменилось на .html) - в результате всё отлично, за исключением того, что не видит слайдер с фотографиями на главной странице. Где править код,подскажите, пожалуйста. Спасибо.

4X_Pro
0

Скорее всего, нужно подправить Javascript где-то в index.html главной страницы. Еще могу предположить, что список фотографий для слайдера подгружался через AJAX, а wget такие вещи видеть не умеет. Могу еще посоветовать посмотреть, какая ошибка вылезает в консоли броузера, которая доступна по Ctrl+Shift+J (в Chrome-подобных броузерах).

Нет
Никола К.
0

День добрый. Есть такой фопрос: существует сайт http://www.vmasshtabe.ru/promzona/energetika/kso-298-transformatornaya.html
где надо скачать файлы этой КСО-шки. по идее они лежат прям на странице, однако там же есть скрипт который считает рейтинг, которого, в свою очередь, у меня нет. Как можно скачать целиком всю страницу вместе с файлами, либо же, можете указать в каком месте они лежат? Заранее огромное спасибо)

4X_Pro
0

Без регистрации там ссылок не видно вообще, так что сказать что-либо определенное не могу.

Нет
Link
0

Ребята, подскажите пожалуйста. Есть ли возможность при помощи данного софта скачать локальную копию альбомов в вк?
Я работаю сборщиком заказов, а продавцы хитры, все свои бока могут и возможно перекладывают на меня. Решил попробовать сохранять изначальный вид альбомов и его содержимого. Я могу как-то настроить батник или софт под свой логин и пароль к сайту вк, чтобы он не сохранял мне страницу с предупреждением "только авторизированные пользователи имеют доступ"? Помоги решить данную проблему, может есть уже готовое решение? Заранее спасибо вам!

4X_Pro
0

Можно, если вы знаете, что такое cookies и как вытащить их из броузера. Тогда нужно в вызове wget добавить "--header=Cookie: имя=значение".
Если нет, то вряд ли.

Нет
Link
0

а вы не подскажите, как мне это сделать?

Нет
pippa
0

а как пропустить папку?

4X_Pro
0

Использовать параметр --exclude-directories или его сокращенный вариант -X. Например, такой вызов:

wget http://4xpro.ru/ -r -l 3 -X lytdybr -X forum


скачает весь этот сайт, кроме дневника и форума.
Нет
Гость
0

Здравствуйте!

Извините пожалуйста за беспокойство, но очень нуждаюсь в Вашем профессиональном совете. Хочу скачать эту веб-страницу https://avi.cuaed.unam.mx/repositorio/moodle/pluginfile.php/2858/mod_resource/content/11/contenido/index.html, чтобы просматривать в оффлайн. Скачивала ее с помощью WGet. В оффлайн режиме грузит все, кроме видео. Есть ли возможность настроить Wget так, чтобы можно было скачать страницу полностью, чтобы вид и функции были такими же как и онлайн, и чтобы видео на странице тоже можно было загрузить без использования интернета? Подскажите пожалуйста, что нужно написать в строке? Писала много разных команд, но тщетно. Никак не могу найти совета.

4X_Pro
0

Нет, видео на той странице вставлено с YouTube, а такое WGet качать не умеет.
Можно пойти другим путём: щелкнуть правой кнопкой по видео и там в меню выбрать «Копировать URL видео», а дальше воспользоваться сервисами типа SaveFromNet. Но это придётся делать вручную, автоматизировать не получится…

MadTechGuy
0

У SaveFrom есть специальный домен: ssyoutube.com. Если в URL видео YouTube заменить «youtube.com» на «ssyoutube.com» и перейти по нему, то сработает перенаправление на страницу скачивания видео. Есть ещё youtube-dl, который позволяет частично автоматизировать задачу. Есть способы автоматизировать её полностью, но все они нетривиальные.

Нет
BiMixxx
0

день добрый, разъясните, что я делаю не так: запустил скачивание с сайта файлов с расширением .zip, но через несколько часов появились только пустые папки. а где файлы?
строка: wget.exe -r -l5 -P D:\! Nevseoboi.com.ua

4X_Pro
0

Там ссылки не доступна напрямую, а генерируются через JavaScript при каждом просмотре страницы (скорее всего, защита от автоматического скачивания). Поэтому скачать что-то wgetом не получится.

Написать комментарий


Задать вопрос