Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Wget

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153

Открыть новую тему     Написать ответ в эту тему

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 бит отдельные пакеты).
 
Литература.
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’а
 

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

Всего записей: 1528 | Зарегистр. 17-06-2003 | Отправлено: 13:39 08-11-2003 | Исправлено: juvaforza, 17:27 01-09-2019
JekaRus

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
igor_andreev
Действительно твой вариант работает. До этого я использовал вариант подсказанный на форуме такой
set http_proxy=http://xxx:xxx
wget.exe --proxy-user=xxxxxx --proxy-passwd=xxxxxx -i DrWeb.txt -a!drweb.log -c
 
C учетом подстановки юзера и пароля в твой вариант получил такую строчку
wget -e "ftp_proxy=xxx:xxx" -e "use_proxy=on" --proxy-user=xxxxxx --proxy-passwd=xxxxxx -i DrWeb.txt -a!drweb.log -c
 
Проблема в том, что такой вариант вместо непринятых файлов скачивает html страничку от прокси юзергейта такого содержания

Не удалось установить связь с сервером \"ftp.drweb.com\"!
Запрос: RETR /pub/drweb/bases/drw44435.zip  
Получен ответ: 550 Failed to open file.  

И сохраняет эту html-ку с именем drw44435.zip размером 2,5КБ. То есть по идее в следующем скачивании wget начнет докачивать этот файл и естественно будет битый архив. Как сделать чтоб отсутствующие файлы вообще не появлялись? По http таких проблем не было.

Всего записей: 1013 | Зарегистр. 10-08-2005 | Отправлено: 02:33 07-04-2008
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
JekaRus
Сугубо имхо - базы доктора "весят" с гулькин нос и докачивать там нечего, лучше применять не --continue, а --mirror. Тем более, что у докторвеб-овцев есть дурная привычка перевыпускать базы Через неделю они этот drw44435.zip заменят и нечего там будет --continue, перекачивать только по новой.
 
А что у тебя в DrWeb.txt и откуда ты берешь его содержимое?  
 

Всего записей: 1646 | Зарегистр. 08-12-2004 | Отправлено: 07:22 07-04-2008
JekaRus

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
В файле DrWeb.txt пути к антивирусным базам.
 
ftp://ftp.drweb.com/pub/drweb/bases/drw44435.zip
ftp://ftp.drweb.com/pub/drweb/bases/drw44436.zip и тд
 
Вручную написал и пару раз в неделю батник запускаю для проверки.
Ни разу не слышал чтоб файлы баз заменяли. Заменяют полный комплект и файл вирусов на сегодняшний день drwtoday. А если я буду использовать миррор и каждый раз по новой скачивать, то с моим обрывистым нетом будет у меня по сто раз скачивать одно и то же. У меня очень отстойный инет. А файлы баз весят иногда по 400кил. Без докачки скачать нереально. Пока на фтп базы не положили было очень все удобно.

Всего записей: 1013 | Зарегистр. 10-08-2005 | Отправлено: 07:48 07-04-2008
igor_andreev

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

Цитата:
Вручную написал и пару раз в неделю батник запускаю для проверки.  

А у тебя вообще нет возможности напрямую с ftp скачивать, что-бы нормальный index.html получать с содержимым папки bases\ ? Можно из файла .listing еще имена текущих zip вытаскивать, всяко актуальней список будет.

Цитата:
Ни разу не слышал чтоб файлы баз заменяли.

На info.drweb.com почаще заходи. Или подпишись там на rss (оранжевый значок в верхнем правом углу).
http://info.drweb.com/show/3286/ru
http://info.drweb.com/show/3289/ru
http://info.drweb.com/show/3293/ru
...  

Цитата:
А если я буду использовать миррор и каждый раз по новой скачивать

При --mirror скачивается только то, что отсутствует в локальной папке или старее файла, лежащего на ftp.
 

Всего записей: 1646 | Зарегистр. 08-12-2004 | Отправлено: 09:16 07-04-2008
Aeismann



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
JekaRus, зачем придумывать такие сложности? Первым делом скачиваешь индексный хтмл, вторым заходом скармливаешь вгету в качестве источника.

Всего записей: 174 | Зарегистр. 24-10-2006 | Отправлено: 22:46 07-04-2008
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Aeismann
Это при прямом соединении с ftp. А прокси "корячит" index.html, делает из него черт знает что

Всего записей: 1646 | Зарегистр. 08-12-2004 | Отправлено: 05:47 08-04-2008
Aeismann



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
igor_andreev, гм... какой-то неправильный прокси. Или ты имеешь в виду листинг фтп-директории? А зачем, коглда на сайте он представлен?
В любом случае, у меня отлично пашет вот такая конструкция (много всяких рюшечек):
 

Код:
 
@echo off
 
set DrWeb=C:\Soft\System\DrWeb\
 
rem set Log=--output-file wget.log
set WGETRC=%CD%\.wgetrc
 
wget -O.\Archive\list.html http://www.drweb.ru/download/50/
wget -Azip -P .\Archive -i.\Archive\list.html -F
 
7za e Archive\*.zip -oUnpack -aos -x!*.txt
7za e Archive\*today*.zip -oUnpack -aoa -x!*.txt
 
xcopy Unpack\*.* %DrWeb% /Y /C
 
pause
 

 
настройки:
 

Код:
 
    # connection
timeout = 10
tries = 3
retry_connrefused = yes
waitretry = 10
    # download
timestamping = yes
recursive = no
    # proxy
http_proxy = 192.168.12.хх:8080
 

Всего записей: 174 | Зарегистр. 24-10-2006 | Отправлено: 12:41 09-04-2008 | Исправлено: Aeismann, 12:43 09-04-2008
igor_andreev

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

Цитата:
Или ты имеешь в виду листинг фтп-директории?

Да, тот файл index.html, что создает wget, если ему отдать ftp-url с завершающим обратным слешем(он сразу думает - раз слеш в конце - значит это не файл, а папка, ну ка я щас ее проиндексирую)

Цитата:
В любом случае, у меня отлично пашет вот такая конструкция

Работала неделю назад, загляни в свою папку с базами Там какая-то реорганизация, я не вникал, drweb.ru и drweb.com - это теперь одно и то-же. Ссылка http://www.drweb.ru/download/50/  
 тоже на drweb.com ведет.
 
Сейчас наверно вот так актуально будет:

Код:

wget -O "%temp%\drweb.tmp" http://download.drweb.com/bases/
type "%temp%\drweb.tmp" | find "ftp://" | geturls>drweb.lst

И в файле drweb.lst - готовый список для закачки(зеркалирования)
geturls - это geturls.zip (32 Кб), рульная штука для вытаскивания на свет божий всех http\ftp адресов из stdin  
 

Всего записей: 1646 | Зарегистр. 08-12-2004 | Отправлено: 13:12 09-04-2008 | Исправлено: igor_andreev, 13:38 09-04-2008
Aeismann



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

Цитата:
Работала неделю назад, загляни в свою папку с базами

Угу, обнаружил... сижу, чешу репу... почему-то базы вообще не качаются, хотя адреса выкусываются нормально.
Конструкция
Цитата:
type "%temp%\drweb.tmp" | find "ftp://" | geturls>drweb.lst
любопытна, однако почему бы не доверить парсинг самому вгету?

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

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

Цитата:
любопытна, однако почему бы не доверить парсинг самому вгету?

Можно доверить, почему бы и нет? Я уже привык просто geturls пользоваться. Там мусора на странице все равно много, так можно:

Код:

wget -O "%temp%\drweb.tmp" http://download.drweb.com/bases/  
type "%temp%\drweb.tmp" | find "ftp://" >drweb.lst
wget --force-html --mirror -i drweb.lst

Всего записей: 1646 | Зарегистр. 08-12-2004 | Отправлено: 13:50 09-04-2008
BakLAN



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ, а кто-нибудь компилить пробовал Wget ?

Всего записей: 2830 | Зарегистр. 15-12-2003 | Отправлено: 01:35 10-04-2008
f_serg



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

Цитата:
Народ, а кто-нибудь компилить пробовал Wget ?

И неоднократно. А в чем вопрос-то?

----------
Serg

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
f_serg
В том, что никак не могу скомпилить с поддержкой SSL. Использую компилятор GCC. Вначале какое-то время - где-то секунд 30 - проходит компиляция, а потом возникают ошибки в стиле: не могу найти ssl.h и т.д. Путь к папке, где установлен SSL - OpenSSL 0.9.8g - прописал в makefile, но это не помогает...

Всего записей: 2830 | Зарегистр. 15-12-2003 | Отправлено: 17:47 10-04-2008
XXXXL



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ используйте следующую строку:  

Код:
 wget -c http://host.ru/YYY.exe

Бывает что хост в дауне и закачать файт не получиться ((((
Вопрос:
Можно ли как то перенаправить закачку с запасного линка, если с первого не закачивает???
Спасибо.

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 21:20 10-04-2008
igor_andreev

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

Цитата:
Можно ли как то перенаправить закачку с запасного линка, если с первого не закачивает???

wget -c "основной url" "запасной url"

Всего записей: 1646 | Зарегистр. 08-12-2004 | Отправлено: 21:28 10-04-2008 | Исправлено: igor_andreev, 21:31 10-04-2008
XXXXL



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
igor_andreev, СПАСИБО!
А как сделать чтобы файл скачивался в ту директорию где и сам wget ?
Если использую так:
wget -c http://host.ru/111/222/YYY.exe  
то скачивает в ту директорию где и сам wget  
А если так:
wget --mirror "основной url" "http://host.ru/111/222/YYY.exe"
то файл скачивался вместе с кучей папок, в которых он и находился: host.ru/111/222/YYY.exe

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 21:40 10-04-2008 | Исправлено: XXXXL, 21:41 10-04-2008
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XXXXL
  -nd, --no-directories           don't create directories

Всего записей: 1646 | Зарегистр. 08-12-2004 | Отправлено: 21:52 10-04-2008
XXXXL



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
igor_andreev, большое СПАСИБО!!!

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 22:02 10-04-2008
f_serg



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

Цитата:
не могу найти ssl.h и т.д.

Обрати внимание, что заголовочные файлы OpenSSL должны лежать в подкаталоге openssl. Соответственно, если ты пишешь -I C:/local/include , то у тебя должен быть каталог C:/local/include/openssl , в котором уже и находится ssl.h.

----------
Serg

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
f_serg
Я уже что только не ставил в пути к  OpenSSL. Изначально написано, что нужно указать путь, где установлены они самые, я и поставил: OPENSSL_PATH = c:/openssl-0.9.8g, пробовал также OPENSSL_PATH = c:/openssl-0.9.8g/include, хотя заголовочные файлы лежат здась: OPENSSL_PATH = c:/openssl-0.9.8g/include/openssl. Наклон слешей тоже менял. Результат один и тот же. Подробнее...
 
 
Добавлено:
Я уже просто задолбался. Принёс всё на пары по Си. Учитель проделал те же самые действия и НИКАКИХ ПРОБЛЕМ! В чём могут быть грабли ума не приложу...

Всего записей: 2830 | Зарегистр. 15-12-2003 | Отправлено: 23:36 11-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 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153

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

Имя:
Пароль:
Сообщение

Для вставки имени, кликните на нем.

Опции сообщенияДобавить свою подпись
Подписаться на получение ответов по e-mail
Добавить тему в личные закладки
Разрешить смайлики?
Запретить коды


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2018

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru