Простой консольной утилитой 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
Шпаргалка по wget аргументам команды
-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.