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

Редактировать | Цитировать | Сообщить модератору
Baltazar500
 
На сегодня самая старшая доступная версия v1.16.3 - wget-1.16.3_curl-7.41.0_win32_win64.7z (2015-03-15, 2.8 MB, x86 и x64), а новее пока и исходники ещё не написаны.     

Отправлено: 12:50 12-06-2015
mithridat1



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите набор параметров wget для быстрой проверки списка ссылок.
 
При такой команде wget просто бесконечно висит на первой же недоступной(несуществующей) ссылке.
 
wget -i list --spider --timeout=2 --connect-timeout=2 --read-timeout=2 --tries=1
 
Так работает,но при проверке каждой недоступной ссылки выдерживает таймаут в 20 секунд
 
wget -i list --spider --tries=1

Всего записей: 3469 | Зарегистр. 05-01-2006 | Отправлено: 12:06 15-06-2015 | Исправлено: mithridat1, 12:11 15-06-2015
Pasha_ZZZ



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
mithridat1
А надо именно проверить или просто из списка ссылок скачать все существующие? Если скачать все существующие - то лучше ария2 в многопоточном режиме.

Всего записей: 3758 | Зарегистр. 11-03-2002 | Отправлено: 21:20 15-06-2015
mithridat1



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

Всего записей: 3469 | Зарегистр. 05-01-2006 | Отправлено: 22:53 15-06-2015
JekaRus

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

Код:
 
XML=`wget -O - --quiet http://site.ru/sitemap.xml`
URLS=`echo $XML | egrep -o "<loc>[^<>]*</loc>" | sed -e 's:</*loc>::g'`
nohup echo $URLS | tr ' ' '\n' | wget -O /dev/null -i - --quiet --random-wait -nv &
 

Раньше все работало. Но сейчас файл sitemap.xml очень большой и вылетает ошибка

Код:
 
Argument list too long
 

Можно ли как то по другому реализовать проверку ссылок? Скачиать ничего не надо, нужно просто сделать обращение к ссылке.

Всего записей: 977 | Зарегистр. 10-08-2005 | Отправлено: 13:18 24-06-2015
Victor_VG

Редактировать | Цитировать | Сообщить модератору
JekaRus
 
Прикрутить grep для фильтрации. Я так считаю.

Отправлено: 13:54 24-06-2015
JekaRus

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Victor_VG
Так он и так тут есть
URLS=`echo $XML | egrep -o "<loc>[^<>]*</loc>" | sed -e 's:</*loc>::g'`
Скрипт не я писал. Нашел на одном из сайтов. Логику работы только примерно представляю.

Всего записей: 977 | Зарегистр. 10-08-2005 | Отправлено: 14:16 24-06-2015
Pasha_ZZZ



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
JekaRus
А если объединить все? И зачем вам nohup и фоновый запуск? Если нужны - то добавьте, а пока без них:
Цитата:
wget -O - --quiet http://site.ru/sitemap.xml | egrep -o "<loc>[^<>]*</loc>" | sed -e 's:</*loc>::g' | tr ' ' '\n' | wget -O /dev/null -i - --quiet --random-wait -nv

 

Всего записей: 3758 | Зарегистр. 11-03-2002 | Отправлено: 14:58 24-06-2015
Victor_VG

Редактировать | Цитировать | Сообщить модератору
JekaRus
 
Я же сказал - навскидку ответил.

Отправлено: 15:16 24-06-2015
JekaRus

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

Всего записей: 977 | Зарегистр. 10-08-2005 | Отправлено: 05:09 28-06-2015
526549



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте все! Заметил вот что.  
Есть wget версии.
GNU Wget 1.16.2 built on mingw32.
+digest +https +ipv6 +iri +large-file +nls +ntlm +opie +psl +ssl/openssl
 
Если качать файл с ключем -nv, то вывод из wget ограничивается только прогрессбаром закачки
file.zip  39%[=======>              ]   6,79M   853KB/s   eta 15s
 
Если взять версии Wget v1.16.1.36-4781-dirty от Alex_Piggy или TumaGonx Zakkum v1.14 из шапки, то ключ -nv отключает вывод вообще любых сообщений wget при закачке.
Версии из шапки хороши тем, что весят 500-700кб, но не способны выводить ТОЛЬКО прогрессбар. Билды на mingw32 могут показывать лишь процесс скачки, но весят уже под 3 мегабайта.
Можно ли попросить авторов эксклюзивных для руборда версий wget реализовать вывод только прогресса скачивания при ключе -nv, как это сделано на mingw32 ветке.

Всего записей: 332 | Зарегистр. 20-01-2007 | Отправлено: 10:24 07-07-2015 | Исправлено: 526549, 10:26 07-07-2015
Victor_VG

Редактировать | Цитировать | Сообщить модератору
526549
 
Вот вам версия wget-1.16.3_win32_win64_upx.7z, сжатая UPX до ~ 1 Мб от TumaGonx Zakkum, но из-за сжатия она будет жрать на 7 - 10 Мб больше памяти - это расплата за упаковку. Из архива убрана устаревшая сборка cURL 7.40 и её файлы.  
 
Пример вывода:
 
wget64 -nv ftp://anonymous:*password*@ftp5.gwdg.de/pub/tdf/libreoffice/testing/5.0.0/win/x86_64/LibreOffice_5.0.0.2_Win_x64_helppack_zh-CN.msi
2015-07-07 10:54:49 URL: ftp://anonymous:*password*@ftp5.gwdg.de/pub/tdf/libreoffice/testing/5.0.0/win/x86_64/LibreOffice_5.0.0.2_Win_x64_helppack_zh-CN.msi [9973760] -> "LibreOffice_5.0.0.2_Win_x64_helppack_zh-CN.msi" [1]

 
Пойдёт?

Отправлено: 10:50 07-07-2015 | Исправлено: Victor_VG, 10:57 07-07-2015
526549



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Victor_VG
Не вижу смысла. Эта версия не отображает прогресс скачивания при ключе -nv. Речь больше не о размере, а о том, что рубордовские версии не выводят прогрессбар скачивания при ключе -nv, а должны.
========================
Пережал Wget 1.16.2 built on mingw32 через Aspack.

Всего записей: 332 | Зарегистр. 20-01-2007 | Отправлено: 10:58 07-07-2015 | Исправлено: 526549, 11:00 07-07-2015
Victor_VG

Редактировать | Цитировать | Сообщить модератору
526549
 
Ну, это какой версией вам удобнее пользоваться, а ASPack в данной ситуации не лучший выбор - он встраивает очень большой объём своего кода в пакуемый бинарник и бывает безвозвратно их портит. На UPX могут ругаться мухобойки - те же AVG/AVIRA его терпеть не могут и кричат "Волк!" только встретив его сигнатуру UPX! в файле, а далее они его не проверяют, но во многих случаях можно использовать к примеру mpress - на него пока мухобойки не ругаются, но и обратной распаковки на HDD для него не предусмотрено - только динамическая распаковка кода в ОЗУ при запуске бинарника, хотя для Wget 1.1.6.3 mpress v2.1x и сообщит -- MPRESS: TLS callbacks are not supported in this version..

Отправлено: 12:59 07-07-2015 | Исправлено: Victor_VG, 13:10 07-07-2015
526549



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Такой вопрос возник. Yandex Браузер, который раньше претензий не вызывал, теперь стал калом. Переписывает без спросу на себя ассоциации на документы word, pdf и фиг знает какие ещё. Молча становится браузером по умолчанию, ну и собсна сразу же потерял доверие, потому что Амиго-политика как ни посмотри.
 
Стал людям ставить оперу. Тот же яндекс с удобными закладочками, интерфейсом, турбой и прочими оперными ништяками. НО. Все эти хромые бровсеры обновляются чуть ли ни каждый день. А хочется иметь на флешке всегда свежий дистрибутив нужного ПО. На флешке имею скрипт, который через wget уже умеет обновлять Adobe flash player (для всех браузеров), KVRT и AntiSMS. Это самый критичный софт.  
Скрипт примерно такой. Обновляет софт, если по ссылке есть новая версия.  
 
wget.exe http://fpdownload.macromedia.com/pub/flashplayer/latest/help/install_flash_player_ax.exe -nv -N
wget.exe http://fpdownload.macromedia.com/pub/flashplayer/latest/help/install_flash_player.exe -nv -N
wget.exe https://antisms.com/AntiSMS.exe --no-check-certificate -nv -N
wget.exe http://devbuilds.kaspersky-labs.com/devbuilds/KVRT/latest/full/KVRT.exe --no-check-certificate -nv -N
У всего этого софта есть постоянные ссылки на самый свежий билд, а потому скрипт работает прекрасно уже давно.
Возвращаемся к Opera. На руборде есть постоянная ссылка на оперу
Она имеет вид www .opera.com/download/get/?partner=www&opsys=Windows&product=Opera&nothanks=yes    
Предыдущие ссылки вели на конкретный файл, а эта оперная явно на какой-то скрипт на сервере, который уже перекидывает нас на файл. Браузером качается exe, а вот wget качает хрен пойми что.  
ВОПРОС. Как заставить wget качать эту дребедень?

Всего записей: 332 | Зарегистр. 20-01-2007 | Отправлено: 11:06 08-07-2015 | Исправлено: 526549, 11:07 08-07-2015
Pasha_ZZZ



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
526549
Цитата:
GNU Wget 1.16.3 built on mingw32

Цитата:
wget --trust-server-names "http://opera.com/download/get/?partner=www&opsys=Windows&product=Opera&nothanks=yes"
Все качается

Всего записей: 3758 | Зарегистр. 11-03-2002 | Отправлено: 11:13 08-07-2015
526549



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pasha_ZZZ
Большое спасибо, выручили!

Всего записей: 332 | Зарегистр. 20-01-2007 | Отправлено: 14:36 08-07-2015
Pasha_ZZZ



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
526549
Когда обновляешь кучу софта - лучше все ссылки разом скормить арии2, она многопоточная. Гораздо быстрее, если инет позволяет.

Всего записей: 3758 | Зарегистр. 11-03-2002 | Отправлено: 17:15 08-07-2015
Sova16

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго всем дня , уважаемые!
Подскажите , а какая версия wget (для Windows) сможет скачанный файл загрузить на ftp сервер с авторизацией (логин-пароль), находящийся в моей локальной сети? К примеру h__p://free_server/center/bar.bin загрузить на \\192.168.1.100\var\bin с заменой существующего файла на новый.
   Буду благодарен , если подскажите набор команд.

Всего записей: 2 | Зарегистр. 10-11-2007 | Отправлено: 12:23 10-07-2015 | Исправлено: Sova16, 12:25 10-07-2015
Victor_VG

Редактировать | Цитировать | Сообщить модератору
Sova16
 
Никакая. Для этого есть Wput парная к Wget утилита, вот она предназначена для передачи на сервера (put), а Wget для скачивания с серверов (get).

Отправлено: 12:42 10-07-2015
Открыть новую тему     Написать ответ в эту тему

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