Alex_Piggy
Advanced Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Доброе время всем. Вариант шапки. Добавил свою сборку, спрятал FAQ под more. __________________________________________________________________________________________ [ UNIX Shell ] || [ Рекурсивная загрузка веб-сайтов ] — родительские ветки.
GNU Wget GNU Wget — это свободная неинтерактивная утилита для скачивания файлов по HTTP, HTTPS и FTP (и только), обладающая самым базовым функционалом загрузки одиночных файлов и рекурсивной загрузки сайтов (HTTP) и директорий (FTP). | Офсайт | Википедия | Фрешмит | Охлох | Ман | Ман (русск.) | Где взять. Под GNU — уже стоит. Под FreeBSD — есть в портах. Под Mac OS X — собрать ванильный. Под Windows есть варианты: 0) Cygwin, 1) GNUWin32 (учитывайте зависимости), 2) Wget + OpenSSL by GetGnuWin32, 3) by Bart Puype 4) · Описание сборок by TumaGonx Zakkum · v. 1.14, собранная с поддержкой OpenSSL 1.0.1c · дополнительно к ней переводы, OpenSSL сертификаты, настройки 5) Wget_Nightly Внесены изменения! Обсуждение/предложения - в тему. Литература. • Popkov. Параметры программы wget • В. А. Петров. Wget — насос для Интернета FAQ (ответы под more). Нажмите здесь, чтобы прочитать полностью Q:Можно ли простым перебором загрузить страницы (допустим) с первой по сотую c последовательной нумерацией: http://example.org/index?page=1 http://example.org/index?page=2 ... http://example.org/index?page=100 A: Вэ-гет не умеет делать инкрементальный перебор, поскольку это умеет делать любая командная оболчка. На Баше это делается так: $ wget -E "http://example.org/index?page="{1..100} Еще раз отметьте, {1..100} — это синтаксическая конструкция Баша, а не Вэ-гета. Эквивалентной этой будет команда: $ for i in {1..100}; do wget -E "http://example.org/index?page=$i"; done Эквивалент для Win cmd for /l %i in (1,1,100) do wget -E "http://example.org/index?page=%i" Q: А как собственно сайт целиком-то загрузить? A: $ wget -mpEk "http://example.org" Это, наверное, самый ходовой набор ключей, но вам, может быть, более подойдут другие. Что значит каждый — легко узнать в мане. Q: Я хочу загрузить с сайта, требующего авторизации. Что делать? A: Проще всего кинуть куда-нибудь файл с нужными (но лишние не помешают) куками в нетскэйповском формате, затем воспользоваться ключом --load-cookies. $ wget --load-cookies cookies.txt бла-бла # файл cookies.txt в текущей директории У Файрфокса куки в требуемом виде можно получить, воспользовавшись расширением «Export Cookies»; у Хрома — «Cookie.txt export» Q: Не-ASCII символы сохраняются в именах файлов как "%D0%A5%D1%83%D0%B9" (или того хуже) Если локаль юникодная - A: Укажите ключ --restrict-file-names=nocontrol,unix или --restrict-file-names=nocontrol,windows соответственно. Если локаль не юникодная (как в Win32) - использовать вариант от Alex_Piggy с ключем "--local-filesystem-encoding=ENCODING", где "ENCODING"- нужная кодировка. Q: Известно, что можно приказать Вэ-гету обновить ранее загруженный файл, если на сервере новее или иного размера (ключ --timestamping, он же -N). Можно приказать учитывать только дату, но не размер (--timestamping --ignore-length). А можно ли учитывать только размер, но не дату? A: Средствами только Wget - нет. Как вариант - использовать скрипты, например для Win32 - http://forum.ru-board.com/topic.cgi?forum=5&topic=10066&start=1541&limit=1#1 Q: Можно ли приказать Вэ-гету докачать файл, но только если он не изменился. A: Нет, нельзя. Сочетание ключей -cN, как можно было бы предположить, нужного эффекта не даст — «докачает» даже если файл изменился — получите в итоге мусор. Q: Можно ли при рекурсивной загрузке ограничится только ссылками, содержащими параметр "lang=ru" Например, загрузить: http://example.org/index?lang=ru http://example.org/page?id=1001&lang=ru http://example.org/file?id=60&lang=ru&format=dvi и не грузить: http://example.org/index?lang=en http://example.org/about?lang=fr и т.д. A: Нет такой возможности. Общий вид URI: <протокол>://<логин>:<пароль>@<хост>:<порт>/<путь>?<параметры>#<якорь>. Так вот ключи -I и -X относятся только к пути, не к параметрам. Q: Можно ли средствами Вэ-гета ограничить перечень загружаемых файлов по дате модификации (новее чем, старше чем)? A: Нет такой возможности. Q: То — нельзя, это — невозможно. Почему все так плохо? A: Потому что Вэ-гет на настоящий момент — базовая программа, предоставляющая только самый базовый функционал. Если вы уперлись в потолок ее возможностей, просто смените ее на другой инструмент. Q: Какие есть альтернативы? Из неинтерактивных свободных программ наиболее функциональными будут: aria2c — для загрузки одиночных файлов по HTTP(S), FTP, бит-торренту; httrack — для рекурсивной загрузки («зеркалирования») веб-сайтов; lftp — для работы по FTP, FTPS, SFTP, FISH, а также с листингами, отдаваемыми по HTTP(S). curl — для работы с одиночными файлам по HTTP, FTP. Разное. • GUI для Wgetа Смело правьте и дополняйте шапку, однако не забывайте отписываться об исправлениях и сохранять исходный вариант под #.
|