Страница 16 / 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
Aeismann



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vovney
Я применяю 3proxy, очень продвинутый и могучий прокс.  
mithridat1
Хм, с форвардингом идея любопытная... можешь поподробнее? Мне неясно, каким образом это может помочь, если загвоздка как раз в звене хттп-прокси -- вгет.

Всего записей: 174 | Зарегистр. 24-10-2006 | Отправлено: 10:10 19-12-2007
mithridat1



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

Цитата:
каким образом это может помочь

Видимо,все же никак.Просто альтернативный способ подружить wget с socks4/5 без помощи программ-перехватчиков API-вызовов типа FreeCap.С последними,кстати,часто бывают дополнительные проблемы.

Всего записей: 3469 | Зарегистр. 05-01-2006 | Отправлено: 10:23 19-12-2007
PREVED



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Неужели никто не сталкивался с ошибкой 15:47:33 ERROR -1: Malformed status line. при закачке виндовым wget'ом?

Всего записей: 1943 | Зарегистр. 10-03-2006 | Отправлено: 12:20 19-12-2007
easy_y

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Может кто то подскажет
у меня прокси 192.168.01.01
пароль пар
логин лог
как мне указать прокси
 
Добавлено:
 
Разобрался
в .bat
set http_proxy=http://192.168.0.1:3128
 
а в следующей строке
wget --proxy-user=юзер   --proxy-passwd=пароль

Всего записей: 317 | Зарегистр. 22-05-2006 | Отправлено: 13:32 19-12-2007
Aeismann



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть мысль, почему не работает Time-Stamping через HTTP... по этому протоколу он получается через Last-Modified, но этот заголовок шлют только веб-сервера, а фтп его, разумеется, не поддерживают...
 
Кстати, допёр, как можно сделать, чтобы в лог записывались все файлы из директории - включить докачку ("continue"). В сочетании со спайдером и классом регулярных выражений - хороший инструмент для получения списка файлов в удобоваримом виде )).

Всего записей: 174 | Зарегистр. 24-10-2006 | Отправлено: 10:47 20-12-2007
JekaRus

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Как указать вгету скачивать список файлов по ссылкам из текстового документа? Хочу создать батник чтоб вгет скачивал файл со списком ссылок, а потом эти ссылки закачивал.

Всего записей: 977 | Зарегистр. 10-08-2005 | Отправлено: 08:41 25-12-2007
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
JekaRus
wget -i <file>
wget --help

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 08:55 25-12-2007
AndreyPA

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пользовал wget для скачки video с одного ftp ввиде скачки всего каталога . Всё было ок. Тут на днях обнаружил что он пишет мне  
--11:32:00--  ftp://xxx.xxx.xxx.xxx/pub/video7/*.avi
           => `d:/Downloads/Video/xxx.xxx.xxx.xxx/pub/video7/.listing'
Connecting to 82.114.133.25:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done.    ==> PWD ... done.
==> TYPE I ... done.  ==> CWD /pub/video7/House M.D. (3 season) ... done.
==> PASV ... done.    ==> LIST ... done.
 
    0K                                                           0.00 B/s
 
11:32:00 (0.00 B/s) - `d:/Downloads/Video/xxx.xxx.xxx.xxx/pub/video7/ .listing' saved [0]
 
Removed `d:/Downloads/Video/xxx.xxx.xxx.xxx/pub/video7/.listing'.

No matches on pattern `*.avi'.

По эксперементировал обнаружил что если конкретный файл указать то качает если не указывать то не может. Еще обнаружил что "listing" получает пустой и соответсвенно не может получить список файлов. Можно как нибудь это обойти. Видно эти "Админы" что-то там наворотили.
Есть у них HTTP где есть список ввиде ссылок на эти файлы (ввиде явной ссылки на FTP). Можно ли как нибудь задать wget чтобы он тогда брал их и только их с HTTP страницы и закачивал. Просто задача такая он докачивает файлы по мере как их выкладывают на FTP поэтому заранее неизвестно их имена. Поэтому и приходится пытаться закачать весь каталог. Что до этого и работало. Пока эти "админы" что-то там не "доделали".  
Буду очень признателен за предложения. Я тут уже почти все ключи перепробовал.

Всего записей: 191 | Зарегистр. 19-11-2001 | Отправлено: 07:12 27-12-2007 | Исправлено: AndreyPA, 07:20 27-12-2007
kain24



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А как сделать чтобы после --mirror не создавались файлы .listing?

Всего записей: 84 | Зарегистр. 03-08-2003 | Отправлено: 05:46 28-12-2007
AndreyPA

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AndreyPA
 
И так отвечаю сам себе может кому-нибудь мой рассказ поможет.
Так же большое спасибо igor_andreev за идеи предложенные в этом топике.
Задача была простейшей. На неком FTP есть каталоги с Video поэтому и решил использовать Wget для закачки целого каталога с видео. Список каталогов из которых надо брать писал в файл. а ночью Wget брал из этого файл по очереди URL и качал их на диск вместе с файлами. Все работало отлично в течении полугода.

Код:
wget  -T60 -w3 -r -nc -nH -A.avi -oD:\wgetVideo.log -Pd:\Downloads\Video --cut-dirs=2 -id:\URLVideo.txt
 
 
Это команда по которой все работало как часы.пока доблестные(или долбанутые) "Админы"  не сделали не "перестроили" свой FTP. И после перестройки FTP перестал выдавать WGET список каталога и в результате WGET не находил ни одного файл в аталоге для скачивания. Хотя при этом если задать прямую ссылку на файл он его скачивал. Встал вопрос как быть дальше. С этими долбанутыми Админами общаться бесполезно они так и не поняли почему у них это не работает. Просто у них ушел специалист по *nix и они сляпали FTP на виндавозе.
Короче я узнал что у них есть сайт где есть страницы с ссылками на эти файлы в каталогах. Т.е. на страница дублируются ссылки на файлы по мере их поступления в каталоги на FTP. Поэтому пришлось по химичить и вот что получилось. Создали 2 батника

Код:
@echo off
del /q d:\wgetVideo.log
for /F %%i in (d:\URLVideo.txt) do call VideoWget "%%i"

В этом батнике я разбираю файл со списком URL на страницы с необходимыми видео и передаю батнику где отдельный URL обрабатывает WGET

Код:
@echo off
wget -Ovideo.txt -aD:\wgetVideo.log %1
findstr ".avi" video.txt >> file.txt
wget -T60 -w3 -r -nc -nH -aD:\wgetVideo.log -Pd:\Downloads\Video --cut-dirs=2 --glob=off -F -ifile.txt
del /q video.txt & del /q file.txt
 

Тут WGET считывает страницу в файл вытаскивает из этого файла в другой файл только ссылки на FTP файлы и потом их закачивает. И все

Всего записей: 191 | Зарегистр. 19-11-2001 | Отправлено: 07:03 30-12-2007
slech



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
всем привет. кто подскажет можно ли с помощью wget остуществить определённый запрос GET/HEAD/POST. опции такой не встретил.
 
 
 
спасибо.

Всего записей: 4821 | Зарегистр. 10-11-2004 | Отправлено: 19:48 15-01-2008
Aeismann



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
slech, не знаю, как ты искал...
--header=STRING         insert STRING among the headers.
--post-data=STRING      use the POST method; send STRING as the data.
--post-file=FILE        use the POST method; send contents of FILE.

Всего записей: 174 | Зарегистр. 24-10-2006 | Отправлено: 09:23 16-01-2008
slech



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Aeismann
wget --header='(Request-Line):HEAD/HTTP/1.0' mail.ru
никак не хочет работать, т.е осуществляет GET хотя вроде прошу HEAD

Всего записей: 4821 | Зарегистр. 10-11-2004 | Отправлено: 10:23 16-01-2008
cuneiform

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня  вопросы:
 
1/ как остановить работу проги?
 
просмотрел всю документацию (help) на прогу по поиску команд типа pause, stop, break, exit... Больше ничего в голову не приходит... похелпите плииз... -- Это важный вопрос, потому как прога не засоряет регист и МОЖНО ЗАПУСКАТЬ СТОЛЬКО КАНАЛОВ ЗАГРУЗКИ ПО РАЗНЫМ АДРЕСАМ, СКОЛЬКО ПОЗВОЛЯЕТ КАНАЛ ЗАГРУЗКИ. У меня работает 3-4 wget'a одновременно. Поэтому надо знать, как остановить каждый индивидуально (список загрузки может иметь 10000-20000 файлов).  
 
2/ как заставить искать новые файлы в указанной известной ранее директории? Не обновления старых файлов, а абсолютно новые, которых ранее не было.  
 
3/ Автор проги с ч и тает многопоточность аморално-неэтичной и допускает исползование только сторонних серверов (не обяз. прокси). Нельзя ли прокси приспособить чтоб загружать файлы по списку с одного IP  2-6 wget'aми c одного и того же cервера через прокси анонимные ?  
 
ТНХ

Всего записей: 1331 | Зарегистр. 27-04-2006 | Отправлено: 03:26 19-01-2008 | Исправлено: cuneiform, 20:31 19-01-2008
fcdobpiy



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
написал скриптик для скачки с фтп и сохранения в определенное место диска с помощью ключа -O . Но вот возникла проблема - если файла на фтп не существует , то создается пустой файл. как этого избежать?
 
Добавлено:
если не использовать -O то файл и не создается если его нету

Всего записей: 352 | Зарегистр. 22-08-2005 | Отправлено: 07:05 22-01-2008
01MDM



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

Цитата:
1/ как остановить работу проги?

Как и большинство консольных приложений исполнение прерывается Ctrl-C, или tasklist\taskkill если програмно.
 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 08:36 22-01-2008
cuneiform

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо большое за помощь в освоении консольных программ и в 21 веке! Приятно поучиться и на старости лет, а молодежи - тем более!  
 
Подскажите тогда еще: Ctrl-C для wget'a  может брутально сильно будет...
 
Если я хочу паузу в загрузке сделать, ну что то в  сети поделать, а потом возобновить закачку далее, какие есть возможности, кроме -с  ?  Если я загружаю 1000 файлов по списку, нужна остановка, как сделать лучше всего такую остановку с учетом нелобходимого возобновления потом плииз? ТНХ

Всего записей: 1331 | Зарегистр. 27-04-2006 | Отправлено: 14:40 26-01-2008 | Исправлено: cuneiform, 14:45 26-01-2008
iglezz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
cuneiform
Брутально не будет, за несколько лет использования wget битых файлов у меня не было.
Но при таких больших списках думаю лучше воспользоватся утилитами, которые умеют приостанавливать нужный процесс.
 
для windows - менеджеры процессов типа Process Explorer или  
Process Killer (пользуюсь им)

Всего записей: 573 | Зарегистр. 18-02-2003 | Отправлено: 20:03 26-01-2008
Engaged Clown



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Немного поздновато, но всё же =)
 

Цитата:
Current build of trunk Binary Build Date: 2008/01/26 23:00:56.78
SVN Version: 2430

 
http://www.christopherlewis.com/WGet/WGetFiles.htm

----------
Опросы ru-board'а

Всего записей: 7019 | Зарегистр. 08-06-2006 | Отправлено: 20:14 29-01-2008
fcdobpiy



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Engaged Clown
ну тогда уж      1.11 STABLE  2008/01/29
_http://www.christopherlewis.com/WGet/wget-1.11b.zip

Всего записей: 352 | Зарегистр. 22-08-2005 | Отправлено: 06:11 30-01-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:11 (c) xForumSaver