GaDiNa
 
  
  Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору [ UNIX Shell ] ||  [ Рекурсивная загрузка веб-сайтов ] — родительские ветки.
      GNU Wget    GNU Wget — это свободная неинтерактивная утилита для скачивания файлов по HTTP, HTTPS, FTP и FTPS (и только), обладающая самым базовым функционалом загрузки одиночных файлов и рекурсивной загрузки сайтов (HTTP) и директорий (FTP).       | Офсайт | Википедия | Фрешмит | Опен-хаб (бывш. Охлох) | Мануал | Ман | Ман (русск., устар.) | --help (русск.) |        Где взять.   Под GNU — уже стоит. Под FreeBSD — есть в портах. Под [Mac] OS X — собрать ванильный.    Под Windows есть варианты: Cygwin | GNUWin32 (учитывайте зависимости) | Wget + OpenSSL by GetGnuWin32  | by TumaGonx Zakkum (он же osspack32 и The Moluccas  |  by Jernej Simoncc (32 и 64 бит отдельные пакеты) | Wget2.   .      Литература.   • Popkov. Параметры программы wget   • В. А. Петров. Wget — насос для Интернета      FAQ      Q: Можно ли простым перебором загрузить страницы (допустим) с первой по сотую, если их адреса:    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   Или для cmd.exe:   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»; у Хрома — «Cookie.txt export»      Q: Не-ASCII символы сохраняются в именах файлов как %D0%A5%D1%83%D0%B9 (или того хуже), хотя локаль юникодная.   A: Укажите ключ --restrict-file-names=nocontrol,unix или --restrict-file-names=nocontrol,windows соответственно.   Если у вас Windows и локаль не юникодная — используйте вариант от Alex_Piggy с ключом --local-filesystem-encoding=ENCODING, где ENCODING — имя кодировки локали в терминах iconv. Текущую локаль cmd.exe можно проверить при помощи команды chcp. Для русской кириллицы в Windows обычно используется CP866.      Q: Известно, что можно приказать Вэ-гету обновить ранее загруженный файл, если на сервере новее или иного размера (ключ --timestamping, он же -N). Можно приказать учитывать только дату, но не размер (--timestamping --ignore-length). А можно ли учитывать только размер, но не дату?   A: При помощи одного только Wgetа — нет.  Возможна обработка получаемых заголовков файла при помощи средств командной оболочки. Пример для cmd.exe.      Q: Можно ли приказать Вэ-гету докачать файл, но только если он не изменился.   A: Нет, нельзя. Сочетание ключей -cN (--continue --timestamping), как можно было бы предположить, нужного эффекта не даст — «докачает» даже если файл изменился — получите в итоге мусор.      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: Для версий < 1.14 нет такой возможности.    Общий вид URI: <протокол>://<логин>:<пароль>@<хост>:<порт>/<путь>?<параметры>#<якорь>. Так вот ключи -I (--include-directories) и -X (--exclude-directories) относятся только к пути, но не к параметрам.   В версиях > 1.14 возможно при использовании ключей --accept-regex / --reject-regex. Пример: --reject-regex "lang=[^r][^u]"      Q: Можно ли средствами Вэ-гета ограничить перечень загружаемых файлов по дате модификации (новее чем, старше чем)?   A: Нет такой возможности.      Q: Можно ли при рекурсивной или множественной загрузке произвольно задать целевые пути и/или имена файлов на основе пути/имени по-умолчанию (применить транслитерацию, отбросить хвостовую часть) или хотя бы независимо (сгенерировать случайно или по счетчику)?   A: Нет.      Q: То — нельзя, это — невозможно. Почему все так плохо?   A: Потому что Вэ-гет на настоящий момент — базовая программа, предоставляющая только самый базовый функционал. Если вы уперлись в потолок ее возможностей, просто смените ее на другой инструмент. Из неинтерактивных свободных программ наиболее функциональными будут:   aria2c — для загрузки одиночных файлов по HTTP(S), FTP, бит-торренту;   httrack — для рекурсивной загрузки («зеркалирования») веб-сайтов;   lftp — для работы по FTP, FTPS, SFTP, FISH, а также с листингами, отдаваемыми по HTTP(S) (пример).   curl — для работы с одиночными файлам по HTTP(S), FTP(S) и многими другими протоколами на более низком уровне.   wput — клон wget для аплоада файлов на удаленные FTP(S) сервера.   axel — клон wget для многопоточной загрузки одиночных файлов по протоколам HTTP(S) и FTP(S). Порты для Windows: 2.4, 2.16.1      Разное.   • GUI для Wgetа       Смело правьте и дополняйте шапку, однако не забывайте отписываться об исправлениях и сохранять исходный вариант под #.
  |   Всего записей: 1560 | Зарегистр. 17-06-2003 | Отправлено:  13:39 08-11-2003  | Исправлено: Maz,   08:49 03-03-2025    |  
  |