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

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день, DimitriusXZ
Странно. Проверил батником. Версией 1.11.4 с ftp.yandex.ru 65 MB скачивалось 8 часов (1700 докачек). Файл не поврежден...  
Интересно. Если получится, скиньте пожалуйста кроме логов и сравнение поврежденного и нормального файла (fc /b file1 file2 >fc.log)
PS. Нашел/вспомнил наконец-то статью про Reget, в которой описывалась похожая ситуация. Возможно ли такое? Природа обрывов?
PPS. mirror.yandex.ru (он же ftp.yandex.ru) поддерживает rsync.  

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 08:33 28-12-2012
Victor_VG

Редактировать | Цитировать | Сообщить модератору
Alex_Piggy
 
Я думаю, что возможно природа обрывов в ошибках на сервере. Ночью мы с другом так вытаскивали один тарбалл размером чуть более 3 Гб. У него он так и не скачался, у меня он был получен после четырёх реконнектов с сервером без ошибок. Более-менее точный ответ дал Werishark - сей горе-сервер рвал связь отдавая около 700 - 1000 Мб и Windows стек TCP/IP несмотря на заявленную поддержку докачки у данного сервера не мог корректно обработать данную ситуацию исправно завершая сессию. Друг бесполезно воевал с ним браузерами, Download Master, FDM, Orbit, IDM - короче всем, что под рукой было но упорно не хотел воспользоваться консольным Wget - "Ну, не люблю я консоль!", а я используя BSD UNIX и wget с ключами  -c -N -nd --trust-server-names --no-check-certificate взял этот тарбалл без проблем за пятнадцать минут без ошибок, а мой друг так и не смог его скачать - постоянный обрыв закачки на 95% и последующее автоудаление файла качалками (GUI-с ), хотя и пытался его получить более трёх десятков раз.  
 
После мы с ним смеялись что как всегда бесплатный демонёнок с блеском  справился там, где широко разрекламированное платное поделие дяди Стиви в очередной раз гвардейски оскандалилось несмотря на солидную сумму что он за него выложил - машина пришла с лицензионной "Windows 7 by Toshiba" и производитель специально оговорил в условиях гарантии что если ихнюю винду снесут, то покупатель лишается гарантии на ноут по основанию "Применение не сертифицированной для данной модели ОС приведшее к отказу оборудования по вине покупателя." - Toshiba в своём репертуаре.

Отправлено: 14:28 28-12-2012 | Исправлено: Victor_VG, 14:33 28-12-2012
ndch

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
есть ли у wget возмоность качать  
с ограничением по времени  
с ограничением по размеру скачиваемого
 
как в curl:
-m, --max-time SECONDS  Maximum time allowed for the transfer
--max-filesize BYTES  Maximum file size to download (H/F)
 
у cur max-time работает корректно всегда.

Всего записей: 4388 | Зарегистр. 31-08-2008 | Отправлено: 08:50 30-12-2012 | Исправлено: ndch, 08:51 30-12-2012
Victor_VG

Редактировать | Цитировать | Сообщить модератору
Вот список ключей для версии 1.14 MinGW32 саму её в полном наборе, включая текст справки я положил тут Wget-1.14_x86_MinGW.7z. Wget.ini можно не использовать, но стоит распаковать ./locale/, curl-ca-bundle.crt, wget.exe, wget_help.txt в любой каталог в пути чтобы система его не искала. Если используются несколько версий Wget, то эту стоит переименовать чтобы исключить возможность конфликта версий.

Отправлено: 18:15 30-12-2012
DimitriusXZ

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Логи постараюсь сохранить. Но это будет не быстро.
Более детально, еще раз, объясню то, что я заметил. Может быть повторюсь.
Wget я качаю образы Linux.
Часто бывало так, что он скачивал образ без нескольких мегабайт.
И отказывался докачивать. В логе писал, что 100% закачка.
Размер образа я получал: wget.exe --spider -S -i links.txt -a log.txt
Докачать я пытался командой: wget.exe -c -N -i links.txt -a log.txt  
(с этими опциями я обычно и скачиваю файлы).
Но он никак не реагировал на то, что размер не соответствует.
Почему?
Приходилось удалять файл и скачивать с нуля.  
Если размер соответствовал, часто внутренне он был не точная копия оригинала.
Проверял MD5. Скачивал еще раз. Я сравнивал дефектный и правильный образы.
Как говорят полоса белая, полоса черная. Так и с его скачанным образом.
Вперемешку, полосами шло соответствие и не соответствие. То там, то там.
Не подряд - не от определенного места и до конца файла.
Мне кажется, что кое-где он создавал смещение данных. Потом исправлялся.
В общем такие ошибки были где-то у 25-40% скачанных мною больших файлов.
Вероятно из-за того, что закачка прерывалась, а потом возобновлялась.
Скорость закачки я ограничивал на уровне 30-50 Кбит/сек., чтобы не занимать полностью канал.
Программа хорошая, но с докачкой у неё явно что-то не то.
По крайней мере у меня.

Всего записей: 458 | Зарегистр. 17-01-2010 | Отправлено: 01:32 02-01-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
DimitriusXZ
 
Логи сохраните раз, и при возможности проверьте не MD5 т.к. у этого алгоритма достаточно высока вероятность ошибки коллизии алгоритма когда для разных двоичных потоков формируется одинаковая MD5SUM, а SHA-256 т.к. у этого алгоритма на данный момент времени ошибок не обнаружено. И попробуйте с моими ключами. Сколько брал Wget/Curl файлы ни разу подобных явлений не видел. Попробуйте с тех же линков отключить свой шейпер - возможно что в повреждении данных виноват именно он.

Отправлено: 02:38 02-01-2013
Belfey

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите, пожалуйста.
Очень нужно выгрузить сайт loveromantika.ru - точнее, zip-файлы с книгами. Какие ключи мне нужно использовать?
Спасибо

Всего записей: 8 | Зарегистр. 05-01-2013 | Отправлено: 18:50 06-01-2013
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый вечер
Belfey
Там просто хозяева сайта похоже такое не любят, поэтому все книги - в исключениях robots.txt
wget -e "robots=off" -nc -r -l inf -H -R "*.jpg,*.gif" -P "loveromantika.ru" -D "book.loveromantika.ru,loveromantika.ru" --exclude-domains="www.loveromantika.ru" loveromantika.ru -a loverom.log
Только сначала скачаются все-все HTML (>160MB). Я просто проверил, что скачивается минимум один файл. Лучше не прерывать...
Да, книги будут в "loveromantika.ru\book.loveromantika.ru"
 
ALL
Обнаружил в 1.14 странную ошибка - при "-c -r", если файл уже существует, выдается "bad file descriptor"... При этом "-r" - нормально...

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 22:04 06-01-2013
anynamer



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Можно ли при помощи Wget записать поток iptv (ссылка вида http://xxxxxxxxxx.xx/media/hdanimalplanet)?
Если нет - подскажите, пожалуйста, чем можно, записал бы через vlc, но там оно тормозит и глючит из-за слабого железа и, наверное, кодеков - получается плохо.

Всего записей: 1488 | Зарегистр. 17-05-2010 | Отправлено: 22:35 06-01-2013
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброй ночи, anynamer
Можно, почему нет?
wget http://xxxxxxxxxx.xx/media/hdanimalplanet -O stream.avi
А можно с этой же целью использовать mplayer:
mplayer -dumpstream -dumpfile stream.avi  http://xxxxxxxxxx.xx/media/hdanimalplanet

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 22:54 06-01-2013
Belfey

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
Спасибо, но не сработало - скачалось только 27 авторов, а их там более сотни...

Всего записей: 8 | Зарегистр. 05-01-2013 | Отправлено: 00:12 07-01-2013
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Belfey
Понятно... Похоже, что на www.loveromantika.ru не только форум...
Вместо --exclude-domains="www.loveromantika.ru" поставьте -X "forum". Запускать из того же места, что и в прошлый раз - докачается.  
wget -e "robots=off" -nc -r -l inf -H -R "*.jpg,*.gif" -P "loveromantika.ru" -D "book.loveromantika.ru,loveromantika.ru" -X "forum,chtenie" loveromantika.ru -a loverom.log
Сейчас тоже проверяю...
Добавлено - в -X chtenie
Впрочем, туда можно все, что в верхней строке.
wget -e "robots=off" -nc -r -l inf -H -R "*.jpg,*.gif" -P "loveromantika.ru" -D "book.loveromantika.ru,loveromantika.ru" -X "forum,chtenie,audioknigi,muzik,kino,debyut" loveromantika.ru -a loverom.log

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 00:34 07-01-2013 | Исправлено: Alex_Piggy, 00:44 07-01-2013
Belfey

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

Всего записей: 8 | Зарегистр. 05-01-2013 | Отправлено: 00:46 07-01-2013
anynamer



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

Цитата:
wget http://xxxxxxxxxx.xx/media/hdanimalplanet -O stream.avi

Мне нужно записать с HD канала, там поток соответствующий, правильно ли будет указать .avi?
Можно выставить оригинальный формат или контейнер (vlc сохраняет в .ts)?

Всего записей: 1488 | Зарегистр. 17-05-2010 | Отправлено: 01:09 07-01-2013
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Belfey
Часть текстов лежит в "loveromantika.ru\www.loveromantika.ru\engine\" в файлах вида "download.php@id=96". Похоже, нужно было включить "--content-disposition" (для получения имен). На самом деле это - zip архивы. Переименовать их все скопом - выполнить в папке "rename *.* *.*.zip"
На 1530 скачанных текстов  более чем 115 авторов останавливаю... Окончательный вариант -  
wget -e "robots=off" -nc -r -l inf -H --content-disposition -R "*.jpg,*.gif" -P "loveromantika.ru" -D "loveromantika.ru" -X "forum,chtenie,audioknigi,muzik,kino,debyut,suget_katalog,tags" loveromantika.ru -a loverom.log
Архивы с книгами будут лежать в "loveromantika.ru\book.loveromantika.ru" по авторам и в "loveromantika.ru\www.loveromantika.ru" - в общей куче файлов (увы... перенести можно командой  "move" - "move *.zip d:\test\loveromantika.ru\").  
 
anynamer
Скорее всего без разницы. Плеер должен понять, какой формат файла. Называйте так, как Вам удобно/привычно.

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 01:23 07-01-2013 | Исправлено: Alex_Piggy, 01:45 07-01-2013
anynamer



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
Спасибо, сейчас испробую, а как завершить скачивание потока?

Всего записей: 1488 | Зарегистр. 17-05-2010 | Отправлено: 01:32 07-01-2013
Belfey

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
 
Большое вам спасибо!

Всего записей: 8 | Зарегистр. 05-01-2013 | Отправлено: 01:37 07-01-2013
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Всегда пожалуйста.
 
anynamer
"Ctrl-C" с клавиатуры или через диспетчер задач убиваете процесс wget . При перезапуске файл будет переписыватся!
Belfey
Обновил окончательный вариант в последнем сообщении. Единственное, что поменяется - будут нормальные имена вместо download.php. Точно так же можно запускать поверх. Если уже скачали, не перекачивайте - распакуется нормально.

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 01:44 07-01-2013 | Исправлено: Alex_Piggy, 01:46 07-01-2013
anynamer



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
Спасибо за помощь в столь поздний час.
Думал есть более корректный способ остановки командой.
Всё получилось - я просто счастлив

Всего записей: 1488 | Зарегистр. 17-05-2010 | Отправлено: 01:49 07-01-2013
Belfey

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
Теперь только осталось разобраться с тем, какие ключи вы использовали и почему именно их

Всего записей: 8 | Зарегистр. 05-01-2013 | Отправлено: 02:08 07-01-2013
Открыть новую тему     Написать ответ в эту тему

Страницы: 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:44:55 (c) xForumSaver