Шпаргалка по wget: как выкачать сайт целиком

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

wget --no-parent -nd -k -p -H -E -K --restrict-file-names=windows https://example.com/path/index.html
wget -r -l1 -k -p --restrict-file-names=ascii --user-agent="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0" https://example.com/path/index.html
wget -r -k -l 7 -p -E -nc --user-agent="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0" https://example.com/path/index.html
wget -A "*page=*" -r -np -nc -l2 --no-check-certificate -e robots=off https://example.com/path/index.html
wget --no-check-certificate -nc -r -A 'article/*-[0-9]*.html','category/news/?page=*' -R 'archhive/old/*/*.html' https://example.com/path/index.html
wget --no-check-certificate -nc https://example.com/path/index.html

-r, —recursive — скачивать все страницы рекурсивно переходя по ссылкам на сайте.

-k, —convert-links — после завершения скачивания преобразовать все абсолютные ссылки на скачанные документы в относительные. Если загружен файл, на который есть ссылка, то ссылка будет указывать на него, если нет — ссылка будет указывать на его адрес в интернете.

-p, —page-requisites — загрузить все файлы, которые требуются для отображения страниц: изображения, css-стили и т.д.

-nc, —no-clobber — запрещает перезапись существующих файлов, на случай если нужно возобновить остановленную загрузку.

-c, —continue — докачивать частично полученные файлы, в случае обрыва связи во время предыдущей закачки.

-N, —timestamping — скачивать файлы с более поздней датой, чем уже имеющиеся. С помощью этого флага можно обновить только изменённые страницы.

-K, —backup-converted — конвертировать ссылки обратно, убирать расширение .orig, изменяет поведение опции -N.

-np, —no-parent — скачивать только файлы находящиеся в текущем каталоге, т.е. запрещает переход по каталогам на уровень выше.

-nd, —no-directories — Не создавать иерархию каталогов во время рекурсивной выборки. При использовании этой опции, все получаемые файлы будут сохраняться в текущем каталоге без разрушения (если имя файла будет встречаться более одного раза, то имена файлов будут расширяться суффиксом «.n»).

-l depth, —level=depth — максимальная глубина вложенности страниц, по-умолчанию depth = 5. Если указать 0 — то wget будет скачивать по всем найденным ссылкам. Если указать 1 — будут скачана указанная страница и все те страницы, на которые она ссылается.

-A, acclist, —accept acclist, -R rejlist —reject rejlist — имена файлов через запятую которые следует загрузить или исключить. Можно указать маски в posix-стиле.

—restrict-file-names=windows — убирает из имён файлов и директорий запрещённые символы для ОС Windows.

-E, —adjust-extension — сохранит файлы с mime-type application/xhtml+xml или text/html с расширением .html, нужно в случае выкачивания динамических сайтов с расширениями .php или .asp. До версии wget 1.12 назывался html-extension.

—domains example.com — разрешает переход по ссылкам только указанных доменов.

-H, —span-hosts — разрешает переходить на любые доменные имена на которые будут указывать ссылки.

-nv, —non-verbose — выводит краткий журнал об обработанных страницах.

-U agent-string, —user-agent=agent-string — представляться как agent-string при запросах к серверу.

—no-check-certificate — не проверять сертификат сервера.

-e command, —execute command — выполнить command как если бы она была частью .wgetrc. Команда будет выполнена после команд
в .wgetrc.

Как заставить wget игнорировать robots.txt?

По-умолчанию wget исполняет инструкции из файла robots.txt, например, сайт может запретить роботам посещать все либо определённые страницы. Чтобы wget игнорировал эти инструкции, нужно добавить параметр -e robots=off.

Альтернатива wget — HTTrack

Помимо wget, существует ещё одна консольная утилита упрощающая выкачку сайтов целиком — HTTrack.

httrack https://example.com/path/index.html -* +*page=* +*/article/*-*[0-9].html -O . --continue

-O, —path — директория в которую будут сохраняться скаченные файлы.

-i, —continue — продолжить прерванную процедуру скачивания.

-* — запретить скачивание любых файлов, кроме прямо разрешённых.

+1_[a-z].doc — скачать файлы соответствующие маске, например 1_a.doc, 1_b.doc.

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

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