Команда wget - пример использования
Команда wget в linux предназначена для загрузки информации из сети Интернет. Поддерживаются протоколы HTTP, HTTPS и FTP. Если нужно закачать сайт, или часть файлов из какого-то сайта, то здесь и пригодится команда wget. В Windows XP для этой цели я использовал программу Download Master, а в linux - wget. Ниже несколько простых примеров из моей личной практики, показывающих как выкачивать файлы с помощью wget.
А теперь примеры. Об одном я уже писал в статье Где скачать обновления для ETKA 7.2. Но здесь повторюсь с дополнениями. По адресу http://update1.lex-com.net/update/audi/0/ лежат exe-файлы, которые нужно закачать. В книге Скотта Граннемана - Linux карманный справочник, есть пример, на основании которого можно написать вот такую команду:
1 | $ wget -r -l 0 -w 5 -A.exe http://update1.lex-com.net/update/skoda/0/ |
По идее, эта команда должна загрузить все файлы с расширением exe, которые находятся в http://update1.lex-com.net/update/skoda/0/. Ключ -l0 говорит о том, чтобы не идти глубже по иерархии, а закачивать только из текущего каталога, -w 5 - это задержка в 5 секунд перед закачкой следующего файла. Этот ключ нужен, чтобы не перегружать сервера запросами. -A.exe - закачивать только файлы с расширением .exe. Но эта команда не сработала и выдала ошибку. Скорее всего из-за того, что wget не смогла получить список файлов в каталоге. Так как http-сервер не отдает такой список. Зато это должен делать ftp-сервер и для ftp-протокола команда wget в таком виде сработает. Вот пример для ftp-сервера компании dlink:
1 | $ wget -r -l2 -np -A.zip -w 1 ftp://dlink.ru/pub/ADSL/DSL-2640U_BRU_C/Firmware/ |
Но как же закачать наши exe файлы? Только указав в команде wget точную ссылку с именем файла:
1 | $ i=320; while wget http://update1.lex-com.net/update/skoda/0/eupdsk"$i"0.exe; do let i++; done |
В этой команде я точно указывал wget какой файл качать, а с помощью цикла while организовал закачку нужных файлов. Как только номер версии увеличится до несуществующего, команда wget вернет ошибку (false) и цикл прервется, закачка прекратится.
Вот еще один пример с закачкой фотографий. На одном из сайтов были выложены фотографии изделий из арбуза. Ссылки вели на сайт ru.fushki.net. Посмотрев несколько ссылок и увидев структуру имен файлов закачал их с помощью двух команд.
Со второй по девятую вот так:
1 | $ i=2; while wget -w 3 http://ru.fishki.net/picsw/082010/11/post/arbuz/arbuz00"$i".jpg; do let i++; done |
Правда фотография arbuz006.jpg отсутствовала, поэтому пришлось, задать i=7 и запустить команду еще раз, а затем уже закачать фотографии начиная с 10-й и до последней:
1 | $ i=10; while wget -w 3 http://ru.fishki.net/picsw/082010/11/post/arbuz/arbuz0"$i".jpg; do let i++; done |
Точно также я закачивал статистические данные сети Интернет от ресурса bigmir.net. Думаю идея понятна. Если имена файлов структурированы, то их можно закачивать командой wget, организовав простой цикл.
vladimir_2008:
Подскажите как правильно установить wget в windows
Ответить
Igorka Reply:
февраля 5, 2011 at 16:16
Не подскажу - не устанавливал.
Ответить
Иван:
Здравствуйте, у меня такая проблема нужно скачать все фотографии с помощью wget с сайта http://photo.rdx.cz/index.php?show=album&aid=412 именно фотографии а не их уменьшенные изображения, помогите пожалуйста.
Ответить
Igorka Reply:
апреля 27, 2011 at 23:23
Будет время - помогу. А не проще автору сайта написать и попросить у него эти фотографии?
Ответить
Иван Reply:
апреля 28, 2011 at 14:52
не мне к сожалению нужно их скачать именно с помощью вгета, если бы так всё было просто я бы давно так и сделал : )
Ответить
Igorka Reply:
апреля 29, 2011 at 9:24
Домашнее задание, что ли? :)
Ответить
Иван Reply:
апреля 30, 2011 at 17:07
да можно сказать что так :) просто учитель молодой и объяснять не умеет, а требовать требует. Первое задание я решил тоже не без помощи надо было скачать вот с этого сайта фотки тоже http://www.strnad.info/17plseMFFUK2011/ ну это решилось таким приказом wget -qO- http://www.strnad.info/17plseMFFUK2011/ | grep -o ‘images/[^"]*’ | egrep -v ‘_t\.|\.js$|\.css$’ | while read ; do wget -qP foto http://www.strnad.info/$REPLY ; done
Ну а теперь осталось второе задание скачать с другого сайта как я писал в первом посте, сегодня я у него спрашивал он сказал что он для решения этой задачи он использовал 3x wget и 3x sed.
Ответить
Иван Reply:
мая 19, 2011 at 23:49
wget -qO- ‘http://photo.rdx.cz/index.php?show=album&aid=412′ | egrep -o ‘index.php\?show=photo&pid=[0-9]+&aid=412′ | sed ’s/.*pid=\([0-9]*\).*/\1/’ | while read num; do wget -P photo.rdx http://photo.rdx.cz/“$(wget -qO- “http://photo.rdx.cz/index.php?show=photo&pid=$num&aid=412″ | egrep -o ‘”showphoto/.+jpg”‘ | sed ’s/”//g’)”; done
Ответить
Igorka: Пример совместной работы команд wget egrep sed:
[...] статье Команда wget - пример использования был показан простенький пример использования команды [...]
17 июня 2011, 12:03