Страница 23 / 118

Wget: [Назад] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 [Вперед]

GaDiNa



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
[ UNIX Shell ] || [ Рекурсивная загрузка веб-сайтов ] — родительские ветки.
 
GNU Wget

GNU Wget — это свободная неинтерактивная утилита для скачивания файлов по HTTP, HTTPS, FTP и FTPS (и только), обладающая самым базовым функционалом загрузки одиночных файлов и рекурсивной загрузки сайтов (HTTP) и директорий (FTP).
 

| Офсайт | Википедия | Фрешмит | Опен-хаб (бывш. Охлох) | Мануал | Ман | Ман (русск., устар.) | --help (русск.) |

 
Где взять.
Под GNU — уже стоит. Под FreeBSD — есть в портах. Под [Mac] OS X — собрать ванильный.  
Под Windows есть варианты: 0) Cygwin,  1) GNUWin32 (учитывайте зависимости), 2) Wget + OpenSSL by GetGnuWin32, 3) by Bart Puype  4) by osspack32, 5) by Alex_Piggy, 6) by Jernej Simoncc (32 и 64 бит отдельные пакеты).
 
Литература.
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 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) и многими другими протоколами на более низком уровне.
 
Разное.
GUI для Wgetа
 

Смело правьте и дополняйте шапку, однако не забывайте отписываться об исправлениях и сохранять исходный вариант под #.

Всего записей: 1503 | Зарегистр. 17-06-2003 | Отправлено: 12:39 08-11-2003 | Исправлено: VictorVG2, 22:57 06-01-2016
HelioSS



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть такая проблема.
При запуске закачки консольное окно не отображает информацию о процессе закачки. Т.е. оно нормально существует в процессе закачивания файла, но что там происходит - не видно.
Это косяк WGet'а или консоли?
P.S. OS - WinXP

Всего записей: 3912 | Зарегистр. 26-11-2007 | Отправлено: 13:08 13-04-2008
Victor_VG

Редактировать | Цитировать | Сообщить модератору
HelioSS
 
Скорее режим консоли. Поскольку можно ей указать при запуске скрывать своё окно.

Отправлено: 14:47 13-04-2008
BakLAN



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ, ну помогите разобраться с компиляцией сабжа. Очень нужно. Мой последний пост на предыдущей странице.

Всего записей: 2788 | Зарегистр. 15-12-2003 | Отправлено: 19:14 13-04-2008
Aeismann



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
HelioSS, проверь, не включена ли опция ведения лога.

Всего записей: 174 | Зарегистр. 24-10-2006 | Отправлено: 23:14 13-04-2008
f_serg



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BakLAN
В общем так. Если у тебя OpenSSL развернут в c:/openssl-0.9.8g и заголовочные файлы лежат в c:/openssl-0.9.8g/include/openssl, то опция компилятору должна быть -Ic:/openssl-0.9.8g/include


----------
Serg

Всего записей: 1706 | Зарегистр. 11-09-2002 | Отправлено: 10:27 14-04-2008
BakLAN



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
f_serg
Я уже и это пробовал. Вот вывод на это. Подробнее...
 
 
Добавлено:
P.S. В переменной окружения записано: C:\Program Files\CodeBlocks\MinGW\bin\
Может, ещё что нужно прописать? Я уже просто в шоке. Что и где не так...

Всего записей: 2788 | Зарегистр. 15-12-2003 | Отправлено: 18:10 14-04-2008 | Исправлено: BakLAN, 18:13 14-04-2008
HelioSS



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Victor_VG

Цитата:
HelioSS, проверь, не включ

 
Что-то не понял про что это.
 
Aeismann

Цитата:
проверь, не включена ли опция ведения лога

 
Где? В WGet? Так а надо включить для того, что бы информация отображалась в консоли?
 

Всего записей: 3912 | Зарегистр. 26-11-2007 | Отправлено: 19:14 14-04-2008
f_serg



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BakLAN
Не так. Должно быть именно -IC:/openssl-0.9.8g/include , а не -IC:/openssl-0.9.8g/include/outinc.
 
Я бы сделал так:
 

Код:
ifdef SSL
## OPENSSL_PATH is the OpenSSL installed directory
OPENSSL_PATH=C:/openssl-0.9.8g
CFLAGS += -I${OPENSSL_PATH}/include -DHAVE_SSL
LIBS += -L${OPENSSL_PATH}/lib -leay32 -lssl32
OBJS += openssl${OBJ_EXT} http-ntlm${OBJ_EXT}
endif


----------
Serg

Всего записей: 1706 | Зарегистр. 11-09-2002 | Отправлено: 08:40 15-04-2008
Aeismann



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
HelioSS, да, возможно, у тебя прописана опция --output-file / -о. Заголовок консоли меняется? Если лог включен, там должен отображаться текущий скачиваемый файл.

Всего записей: 174 | Зарегистр. 24-10-2006 | Отправлено: 09:42 15-04-2008
fox neo



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет гуру...
Прошу помочь вроде как не самой тревиальной задачей.
условия:  
есть локальная папка - c:\fol1
есть ftp папка - admin:[email protected]\fol2\
в папку fol2 ежечастно падает файл, всего в fol2 храняться файлы за 2 месяца
задача:
сливать с fol2 в fol1 файлы которые не старше 10 дней.  
Регульрно из fol1 процесс удаления тех кто старше в fol1, и параметр -N ясен, однако он сливает все, что старее 10 дней, поскольку этих файлов нет.
Помогите пожалуйста составить параметры. Спасибо.

Всего записей: 8 | Зарегистр. 04-06-2006 | Отправлено: 12:09 15-04-2008 | Исправлено: fox neo, 15:16 15-04-2008
HelioSS



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Aeismann
 
Вот строка:
wget --continue --verbose -N -S --debug --tries=8 -UInternetExplorer6.0 --timeout=7 --wait=4 --waitretry=10 -amessages.txt
 

Цитата:
Заголовок консоли меняется?

Да
 
И ещё. Как задать папку для сохранения скаченного?

Всего записей: 3912 | Зарегистр. 26-11-2007 | Отправлено: 13:18 15-04-2008
Aeismann



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
HelioSS
ну вот он в "-amessages.txt" и пишет

Цитата:
Как задать папку для сохранения скаченного?

-P,  --directory-prefix=PREFIX  save files to PREFIX/...
 
fox neo, полистай тему, недавно поднимался именно такой вопрос
 
 

Всего записей: 174 | Зарегистр. 24-10-2006 | Отправлено: 18:12 15-04-2008 | Исправлено: Aeismann, 18:14 15-04-2008
BakLAN



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
f_serg
 
ТАК я уже тоже пробовал. Результат аналогичен. Ума не приложу, почему так получается. Я уже любые пути переробовал. У препода на парах всё компилицца, а у меня, как дома, так и на работе - один результат ...

Всего записей: 2788 | Зарегистр. 15-12-2003 | Отправлено: 22:34 15-04-2008
Integer27h



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Вопрос был задан ранее:

Цитата:
Привет всем. Использую GNU Wget 1.10.2 , соединение через прокси сервер. Иногда сталкиваюсь с таким:
 
Connecting to xxx.xx.x.xx:xxxx... connected.
Proxy request sent, awaiting response... 504 Proxy Timeout ( The connection timed out. For more information about this event, see ISA Server Help.  )
07:00:45 ERROR 504: Proxy Timeout ( The connection timed out. For more information about this event, see ISA Server Help.  ).  
 
Как можно увеличить таймаут?

Ответ:

Цитата:
wget -h | find "timeout"

Добавил в .wgetrc:
timeout = 240
wait = 10
 
Ситуация не изменилась, что делаю неправильно?

Всего записей: 198 | Зарегистр. 11-09-2006 | Отправлено: 06:09 16-04-2008 | Исправлено: Integer27h, 06:10 16-04-2008
HelioSS



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Aeismann
Цитата:
ну вот он в "-amessages.txt" и пишет

 
Так мне надо что бы на консоли весь процесс отображался. Что бы всё видеть real time.

Всего записей: 3912 | Зарегистр. 26-11-2007 | Отправлено: 14:17 16-04-2008
Aeismann



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
HelioSS, так убирай эту опцию. А так, чтобы одновременно и в консоль, и в файл - не получится. Хотя можешь наваять прогу, которая будет получать данные из stdin, выводить их на экран и писать в файл, и тогда запускать  
wget <...> | yourprog.exe

Всего записей: 174 | Зарегистр. 24-10-2006 | Отправлено: 17:48 16-04-2008
f_serg



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BakLAN
Тогда я пас. Только что собрал wget с OpenSSL. Вообще без вопросов...

----------
Serg

Всего записей: 1706 | Зарегистр. 11-09-2002 | Отправлено: 07:18 17-04-2008
BakLAN



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
f_serg
Хорошо, может, если я напишу пошагово, обнаружишь какую-нибудь ошибку в действиях или недостачу:
 
1. Установил CodeBlocks.
2. В переменной окружения на вкладке "Дополнительно" Свойств Системы кнопка "Переменные среды" в переменную Path добавил: C:\CodeBlocks\MinGW\bin
3. Дальше в папке c:\Wget выполнил команду configure --minGW
4. Подредактировал файл c:\Wget\src\Makefile, добавив путь, где установлен OpenSSL, а именно: c:/OpenSSL-0.9.8g
5. Из папки c:\Wget\src\ запускаю команду: minGW32-make SSL=1

Всего записей: 2788 | Зарегистр. 15-12-2003 | Отправлено: 01:16 19-04-2008
XXXXL



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 06:25 20-04-2008 | Исправлено: XXXXL, 07:15 20-04-2008
f_serg



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BakLAN

Цитата:
4. Подредактировал файл c:\Wget\src\Makefile, добавив путь, где установлен OpenSSL, а именно: c:/OpenSSL-0.9.8g

 
4.5 Подредактировал (выделено жирным) c:\Wget\src\Makefile:
 
CFLAGS += -I${OPENSSL_PATH}/include -DHAVE_SSL
LIBS += -L${OPENSSL_PATH}/lib -leay32 -lssl32
 

Цитата:
5. Из папки c:\Wget\src\ запускаю команду: minGW32-make SSL=1

 
А так все также...

----------
Serg

Всего записей: 1706 | Зарегистр. 11-09-2002 | Отправлено: 07:49 21-04-2008
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118

Компьютерный форум Ru.Board » Компьютеры » Программы » Wget

Сохранено: 09.06.2016 19:40:46 (c) xForumSaver