Как скачать сайт с помощью wget
Перейти к содержимому

Как скачать сайт с помощью wget

  • автор:

wget скачать сайт целиком

Туторы

Консольная команда для скачивания сайта:

wget -r -k -l 7 -p -E -nc -U YandexBot http://domain.com

Используемые параметры для скачивания сайта целиком:

-r — рекурсивное скачивание страниц сайта
-k — преобразовывать ссылки в html коде для локального просмотра сайта
-p — скачивать все файлы используемые при отображении страниц сайта — картинки/стили/скрипты и т.д.
-l — уровень вложенности страниц, насколько wget далеко будет парсить
-E — добавлять к скачанным страницам .html
-nc — при использовании этого параметра, скачанные до этого файлы не будут перезаписаны. используется если вам нужно докачать сайт
-U — задать юзерагент, часто на сайтах запрещается доступ для wget, таким образом мы обходим этот запрет

Если совсем убрать -l то будет скачана только одна страница

Прочая информация по wget в консоли:

man wget
wget --help

22.01.2015 14:10:00

admin

6498

11

Как скопировать любой сайт целиком через wget и перевести его в html

Как скопировать любой сайт целиком через wget и перевести его в html

Материал данной статьи предназначен исключительно для личного использования с целью изучения стороннего кода, либо для целей offline чтения контента в условиях отсутствия Интернета. Также данный материал может быть полезен с целью изучения функции wget. Предупреждаю Вас, что копирование стороннего сайта и использование его в коммерческих целях запрещено и Вы можете понести ответственность за свои действия!

Итак, как скачать себе сайт на любом протоколе (http / https)

Допустим Вам предстоит длительный полёт в самолёте, Интернета не будет и Вы хотите скачать себе какой-либо интересный ресурс для чтения при отсутствии Интернета. Для этого есть прекрасный инструмент, используемый в UNIX-подобных системах (Linux, Mac OS). Также можно найти вариант для Windows.

В Linux wget ставится с помощью пакетного менеджера. Если у Вас система, основанная на Debian (Ubuntu и прочие), то команда будет следующей:

sudo apt install wget

Возможно, wget уже установлен в Вашей системе и Вы получите об этом соответствующее сообщение.

Затем, переходим в нужную нам папку, например Desktop и выполняем команду:

wget -r -k -i -p -E -F -e robots=off http://адрес_сайта 

Начнётся скачивание. Оно может занять как несколько минут, так и несколько часов, в зависимости от размера ресурса.

А сейчас давайте подробнее рассмотрим параметры, используемые в команде.

-r Включить рекурсивный просмотр каталогов и подкаталогов на удалённом сервере. Если мы не укажем этот параметр, то скачается только одна страница сайта. -k Превратить абсолютные ссылки в HTML документе в относительные ссылки (указывающие на Ваш ПК). Если мы не укажем этот параметр, то ссылки на файлы стилей, js и прочего будут указывать в коде на сайт источник и Вы не сможете использовать сайт в offline-режиме -i Выкачать файлы, указанные по ссылкам на ресурсе (например, pdf-документы и прочие). Сайт - это не только код, но и документы, которые указаны в ссылках на сайте. -p Загружать все файлы, которые нужны для отображения страниц HTML. Например: рисунки, звук, стили При тестировании я не видел разницы между указанием этого параметра и без него. Тем не менее, в мануале рекомендуют всегда указывать этот параметр. -E Сохранять html и css с корректными расширениями Это один из самых важных пунктов, без указания которого Вы не получите рабочего сайта. Дело в том, что на большинстве ресурсов файлы стилей указаны в следующем формате: /style.css?v32489723958876 Всё, что указывается после знака вопроса позволяет разработчикам сайта в автоматическом режиме обновлять кэш пользователей, т.к. в процессе разработки символы после знака вопроса меняются при каждом обновлении файла. При этом файл на сервере в своём имени не имеет ни знака вопроса, ни каких-либо иных символов. Wget сохранит файлы именно с таким расширением и при попытке открытия сайта в браузере у Вас не подгрузятся стили с данными параметрами. Данный параметр позволит преобразовать данные расширения в корректные расширения для браузера. -F Считать, что входящий файл является html. Данная опция необязательна, но её рекомендуют указывать. Вы можете протестировать с данным параметром и без него. -e robots=off Игнорировать запреты, указанные в файле robots.txt. Это ещё одни грабли, на которые можно наступить. В частности, многие сайты запрещают от индексирования файлы стилей, папки с кэшем сервера (в которых), между прочим, могут лежать изображения сайта и прочее. Если Вы не укажете данный параметр, Вы можете столкнуться с ситуацией, когда стили, некоторые картинки и некоторый другой контент попросту не скачается.

По завершению выполнения программы у Вас появится папка с названием сайта, в которую Вам нужно будет зайти и открыть файл index.html в Вашем любимом браузере. Вы увидите полную копию сайта, которую можно использовать удалённо и читать интересные для Вас материалы.

Обратите внимание, что база данных сайта не скачивается. Т.е. весь контент, который изначально находился в базе данных, был скачан и преобразован в html файлы.

Также, есть ещё один ньюанс. Часть ссылок на файлы из меню скачанного сайта может указывать не на файлы, а на каталоги. К примеру, на сайте есть рубрика: «Книги о программировании«. В меню сайта указана ссылка на раздел, к примеру: «/program_books/». Данная ссылка сработает на сервере, но не сработает на локальной машине. Ведь сервер при указании ссылки на папку, автоматически ищет в ней файл index. Чтобы решить эту проблему, Вам нужно будет включить сервер на своей машине. Если Вы будете использовать Windows, то установите программу Open Server (кстати, это лучшая программа для локального сервера для Windows), закачайте в папку с сайтами папку с Вашим сайтом, перезапустите Open Server и после этого открывайте сайт. Если Вы используете Linux, Mac OS — зайдите через консоль в папку с сайтом и выполните команду:

php -S localhost:8080

И после этого сайт будет доступен по адресу http://localhost/

P.S. Ещё, в качестве дополнения к интересным возможностям wget я хочу рассказать про возможность скачивания файлов (документов и прочего по ссылкам в файле). Например, у Вас есть большой список ссылок на картинки или pdf-файлы и Вам необходимо скачать их себе. Для этого копируем все ссылки в один файл, по одной ссылке на 1 строчку и проверяем, что у каждой ссылки есть протокол (http / https). Далее выполняем команду:

wget -i название_файла_с_ссылками_в текущей_папке 

Wget скачает для Вас все файлы и расположит их в указанной папке. Очень удобная и полезная опция!

Желаю Вам удачного использования данных функций в личных целях, для изучения и тестирования.

Подписывайтесь на группу в ВКонтакте, вступайте в сообщество на Facebook, чтобы всегда быть в курсе актуальных выпусков
W e b d e v e l o p m e n t b l o g !

Использование команды Wget на простых примерах

Команда wget

Утилита wget (или команда wget) предназначена для скачивания файлов, веб страниц и других ресурсов из интернета. Рассмотрим основные возможности команды wget на примерах.

Синтаксис команды wget

Команда wget имеет следующий синтаксис:

wget [опции] URL

В простейшем случае, чтобы скачать файл, достаточно указать URL-адрес:

wget https://domain.ru/filename.tar.bz2

Выполнив данную команду, вы скачаете файл filename.tar.bz2 , расположенный по адресу https://domain.ru/filename.tar.bz2, который будет сохранен в текущую директорию.

Указание нового имени файла

Используя опцию -O можно задать название результирующего файла.

Например, если файл, который вы скачиваете, имеет имя filename-1.3.0-release-branch.tar , вы можете сохранить его с именем filename.tar :

wget -O filename.tar ftp://some.host.com/filename-1.3.0-release-branch.tar

Скачивание в фоновом режиме

Чтобы скачать файл в фоновом режиме используется опция -b :

wget -b http://host.com/file.zip

Скачивание нескольких файлов (по списку)

Команде wget можно передать текстовый файл, в котором на каждой строчке записаны URL-адреса, которые требуется скачать. Для этого используется опция -i :

wget -i list-of-files.txt

Скачивание файлов по ссылкам в HTML-документе

Команда wget поддерживает скачивание файлов по ссылкам в HTML-документе. То есть она автоматически находит все ссылки в HTML-файле и скачивает их:

wget --force-html -i file.html

Ограничение скорости скачивания

Чтобы ограничить скорость скачивания используется опция —limit-rate .

wget --limit-rate=500k http://some-site.com/filename.tar.gz

500k означает 500KB/s.

В качестве значения —limit-rate можно указывать скорость загрузки в следующих форматах:

  • байтах в секунду — например: 300
  • килобайтах в секунду — например: 10k
  • мегабайтах в секунду- например: 10.5m

Продолжение загрузки

Чтобы продолжить прервавшуюся загрузку используется опция -c :

wget -c http://some-site.com/file.tar

Проверка существования файла

Перед тем, как скачать файл, можно проверить существует ли он. Например, это может потребоваться, когда вы скачиваете большое количество файлов и хотите заранее знать, все ли из них доступны. Для проверки доступности файлов используется опция —spider .

Например, чтобы проверить доступность файлов в списке можно использовать команду:

wget --spider -i list-of-files.txt

Также можно проверить доступен ли конкретный файл:

wget --spider http://site.com/filename.zip

При использовании опции —spider файлы не скачиваются, а только выполняется проверка.

Как скачать сайт

Инструкцию по скачиванию сайтов с помощью wget смотрите в отдельной статье: Скачиваем сайты целиком — утилита wget

Скачивание с FTP (указание логина и пароля)

Чтобы скачать файл с FTP-сервера, для которого требуется указание логина и пароля, используются опции —ftp-user и —ftp-password :

wget --ftp-user=ИМЯ_ПОЛЬЗОВАТЕЛЯ --ftp-password=ПАРОЛЬ ftp://ftp.адрес.com/filename.tar

Скачивание с HTTP с указанием логина и пароля

Если для доступа к ресурсу по HTTP требуется указание имени пользователя и пароля, то для этого используются опции —http-user и —http-password :

wget --http-user=ИМЯ_ПОЛЬЗОВАТЕЛЯ --http-password=ПАРОЛЬ http://ftp.адрес.com/filename.tar

Указание количества попыток

Если соединение нестабильное, то можно задать количество попыток, чтобы загрузка файла продолжалась в случае сбоя. Для указания количества попыток используется опция -t :

wget -t 10 http://site.com/filename.zip

По умолчанию установлено количество попыток — 20. Но если при попытке загрузки файла получена ошибка 404 (файл не найден) или connection refused, то скачивание прерывается.

Ожидание между загрузкой файлов

При скачивании большого количества файлов, слишком частое обращение к удаленному серверу с вашей стороны может расцениваться сервером как DDoS атака. Опция -w позволяет задать количество секунд, которое требуется ожидать перед загрузкой очередного файла.

wget -w 15 . 

Некоторые веб-сайты умеют распознавать автоматические запросы к сайту, которые происходят с заданной периодичностью. Поэтому даже использование опции -w не всегда помогает. В таких случаях можно воспользоваться дополнительной опцией —random-wait . При ее использовании ожидание перед загрузкой очередного файла составляет случайное количество секунд от 0.5*wait до 1.5*wait. Пример использования (ожидание будет в диапазоне от 15 до 45 секунд):

wget -w 30 --random-wait . 

Указание нескольких опций

В примерах выше мы использовали опции по отдельности. Можно использовать несколько опций в одной команде одновременно, например:

wget -w 50 --random-wait -t 15 --limit-rate=5m http://site.com/file.zip

Заключение

Мы рассмотрели только базовые возможности команды wget по скачиванию файлов. Полный список всех опций и их описание можно получить, выполнив в командной строке:

man wget

Как выкачать весь сайт?

Я хочу скачать весь определенный сайт, вместо того чтобы использовать Настройки — Сохранить страницу как, тем самым сохраняя по одной странице, это долго, а мне нужно скачать весь сайт.
Как это сделать?

  • Вопрос задан более трёх лет назад
  • 36848 просмотров

1 комментарий

Средний 1 комментарий

delphinpro

Сергей delphinpro @delphinpro
Решения вопроса 0
Ответы на вопрос 3
wget -r -k -l 7 -p -E -nc http://site.com/
Ответ написан более трёх лет назад
Нравится 10 3 комментария

AskMy

всё верно , только эта команда работает в linux , поясните в ответе это

ink, отнюдь. и в *BSD работает. И в Windows, достаточно скачать UnxUtils. В MacOS X — не совру, но скорее всего, есть родная.

AskMy

latush, про это я не знал .. сорри
xmoonlight @xmoonlight
https://sitecoder.blogspot.com

Чтобы скачать сайт целиком с помощью wget нужно выполнить команду:
wget -r -k -l 7 -p -E -nc http://site.com/

После выполнения данной команды в директорию site.com будет загружена локальная копия сайта site.com. Чтобы открыть главную страницу сайта нужно открыть файл index.html.
Рассмотрим используемые параметры:
-r — указывает на то, что нужно рекурсивно переходить по ссылкам на сайте, чтобы скачивать страницы.
-k — используется для того, чтобы wget преобразовал все ссылки в скаченных файлах таким образом, чтобы по ним можно было переходить на локальном компьютере (в автономном режиме).
-p — указывает на то, что нужно загрузить все файлы, которые требуются для отображения страниц (изображения, css и т.д.).
-l — определяет максимальную глубину вложенности страниц, которые wget должен скачать (по умолчанию значение равно 5, в примере мы установили 7). В большинстве случаев сайты имеют страницы с большой степенью вложенности и wget может просто «закопаться», скачивая новые страницы. Чтобы этого не произошло можно использовать параметр -l.
-E — добавлять к загруженным файлам расширение .html.
-nc — при использовании данного параметра существующие файлы не будут перезаписаны. Это удобно, когда нужно продолжить загрузку сайта, прерванную в предыдущий раз.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *