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

Редактировать | Цитировать | Сообщить модератору
ptitza_in_da_ruboard
 
Так он полностью имитирует Web-браузер как и иные программы его класса - FlashGet, Ant, ReGet, Orbit, FDM. Это инструменты совершенно иного типа и иными принципами построения чем cURL/Wget.  
 
И по дате-времени/размеру - выдача этой информации целиком зависит от настроек конкретного сервера и лишнее всегда там можно отрубить. В итоге сервер передаст вам список файлов без атрибутов длинны и даты-времени. Сравнивайте.

Отправлено: 23:35 21-06-2013 | Исправлено: Victor_VG, 23:41 21-06-2013
Pasha_ZZZ



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ptitza_in_da_ruboard как-то так подойдет? ;-)
Цитата:
@echo off
setlocal enableextensions
for /f "tokens=2" %%s in ('wget -N --spider "http://www.piriform.com/ccleaner/download/slim//downloadfile" 2^>^&1^|find "Length:"') do set RFSize=%%s
if exist "%~dp0ccleaner.exe" for %%s in ("%~dp0ccleaner.exe") do set LFSize=%%~zs
echo Local size = %LFSize%, remote size = %RFSize%
if not "%RFSize%"=="%LFSize%" wget -O"%~dp0ccleaner.exe" "http://www.piriform.com/ccleaner/download/slim//downloadfile"

Всего записей: 3758 | Зарегистр. 11-03-2002 | Отправлено: 04:02 22-06-2013
omamont

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pasha_ZZZ 03:02 22-06-2013
Цитата:
как-то так подойдет?

заменил %~dp0ccleaner.exe и http://www.piriform.com/ccleaner/download/slim//downloadfile
на %~dp0ccleanerPortable.zip http://www.piriform.com/ccleaner/download/portable//downloadfile
работает!! Спасибо.

Всего записей: 3262 | Зарегистр. 12-01-2007 | Отправлено: 12:18 22-06-2013
321new



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

Код:
@echo off  
cls
wget -O "%cd%\update.rar"  --no-check-certificate "https://www.dropbox.com/s/etwboej5v5fjgoq/update.rar?dl=1"  
exit

И при запуске получаю кучу текста. Как на скрине ниже:
 
   
 
Естественно я его хотел бы почти весь этот текст скрыть. Но не весь.  
Хочу скрыть весь текст, кроме строки прогресса закачки. Т.е. скрыть всё, кроме строчки с прогрессом закачки, скоростью, ну и временем закачки, если  выйдет.
Возможно это как-то реализовать? подскажите плз.

Всего записей: 398 | Зарегистр. 03-11-2011 | Отправлено: 16:57 27-06-2013 | Исправлено: 321new, 17:06 27-06-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
321new
 
Да, ключ -nv (--no-verbose) в командной строке Wget подавит её вывод. Команда выглядит так:
 
wget32 wget -q -O update.rar -nv --no-check-certificate "https://www.dropbox.com/s/etwboej5v5fjgoq/update.rar?dl=1
 
можно ещё использовать ключ -b (--background) чтобы отправить процесс Wget-а в фоновый режим и не думать о нём. Увидите его PID при запуске и по окончании результаты работы в указанном вами каталоге. Сам я чаще -b пользуюсь.

Отправлено: 17:05 27-06-2013 | Исправлено: Victor_VG, 17:10 27-06-2013
321new



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Victor_VG, выходит вот так теперь:
   
 
Я имел ввиду наоборот, спрятать весь лишний текст и оставить только строку с прогрессом скачивания и скоростью скачивания

Всего записей: 398 | Зарегистр. 03-11-2011 | Отправлено: 17:09 27-06-2013 | Исправлено: 321new, 17:09 27-06-2013
mithridat1



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
321new
Опция

Цитата:
  -q,  --quiet               quiet (no output).

полностью отключит весь вывод wget.
Оставить только прогресс-бар не выйдет.Как вариант,с grep-ом извращаться.

Всего записей: 3469 | Зарегистр. 05-01-2006 | Отправлено: 17:09 27-06-2013 | Исправлено: mithridat1, 17:12 27-06-2013
321new



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mithridat1, понятно. А что за grep? Просто не слышал даже о таком)

Всего записей: 398 | Зарегистр. 03-11-2011 | Отправлено: 17:12 27-06-2013 | Исправлено: 321new, 17:13 27-06-2013
mithridat1



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
321new
А нафига вам вывод в консоль ? Сделайте вывод в лог + запуск в бэкграунде,как выше посоветовали.
 
https://ru.wikipedia.org/wiki/Grep - есть порты в том числе и под win32

Всего записей: 3469 | Зарегистр. 05-01-2006 | Отправлено: 17:13 27-06-2013 | Исправлено: mithridat1, 17:16 27-06-2013
321new



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mithridat1, да просто, удобнее иногда, когда на экране всё что надо, и ничего лишнего)
 
Благодарю за помощь

Всего записей: 398 | Зарегистр. 03-11-2011 | Отправлено: 17:14 27-06-2013 | Исправлено: 321new, 17:15 27-06-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
mithridat1
 
У него как раз -q и задана но не срабатывает, хотя она весь вывод команды должна подавить, а с -nv | -no-verbose получим:
 
wget32 wget -no-verbose -O update.rar -nv --no-check-certificate "https://www.dropbox.com/s/etwboej5v5fjgoq/update.rar?dl=1 check-certificate "https://www.dropbox.com/s/etwboej5v5fjgoq/update.rar?dl=1
 
$wget32: не удаётся разрешить адрес <wget>
ПРЕДУПРЕЖДЕНИЕ: невозможно проверить сертификат www.dropbox.com, выпущенный </C=US/O=Thawte, Inc./CN=Thawte SSL CA>:
  Невозможно локально проверить подлинность запрашивающего.
ПРЕДУПРЕЖДЕНИЕ: невозможно проверить сертификат dl.dropboxusercontent.com, выпущенный </C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance CA-3>
:
  Невозможно локально проверить подлинность запрашивающего.
2013-06-27 18:17:53 URL:https://dl.dropboxusercontent.com/s/etwboej5v5fjgoq/update.rar?token_hash=AAHXyzlcBzfpg58KEe7nGntxfKoYfHsO9Oygk0TgaSmg9A [114371381/114371381] -> "update.rar" [1]
FINISHED --2013-06-27 18:17:53--
Total wall clock time: 1m 48s
Downloaded: 1 files, 109M in 1m 41s (1,08 MB/s)
 
но у меня для Wget-а локали стоят, посему пишет он по русски.
 
Но, подавить сообщения SSL не выйдет - это сигнал тревоги номер один, а посему его надо видеть.

Отправлено: 17:24 27-06-2013 | Исправлено: Victor_VG, 17:30 27-06-2013
321new



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Понятно. И на этом спасибо за помощь, ребята =)

Всего записей: 398 | Зарегистр. 03-11-2011 | Отправлено: 18:17 27-06-2013
Anton Nikolaev

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Столкнулся с необъяснимым отказом wget скачивать подкаталоги с одного конкретного ftp.
Для проверки скачал с другого ftp - отлично все скачивает с теми же параметрами.
Пробовал всё, что только мог придумать, но мозг уже перегрелся, ниасилил.
 
Параметры, которые хотел изначально:
-N -r x -nH -Ptmp ftp://user:pass@ip:port/path
 
Если использовать -m, то в сохраненном .listing есть полный список подкаталогов, но проходить по ним wget даже не собирается...
 
FAR manager отлично все качает при этом с дефолтными настройками.

Всего записей: 39 | Зарегистр. 18-04-2008 | Отправлено: 10:23 09-07-2013 | Исправлено: Anton Nikolaev, 10:27 09-07-2013
Pasha_ZZZ



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
--retr-symlinks
хотя и он может не помочь в некоторых случаях (описано в документации)

Всего записей: 3758 | Зарегистр. 11-03-2002 | Отправлено: 03:20 10-07-2013
Anton Nikolaev

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

Цитата:
--retr-symlinks

к сожалению, не помогло.
пробовал запускать так:
"C:\Program Files\GnuWin32\bin\wget" -m --retr-symlinks ftp://логин:пароль@IP:port/xdo/repository/Reports/Guest/ --output-file=res
 
в логе:

Цитата:
 
--2013-07-10 08:13:14--  ftp://*login*:*password*@*IP*:*port*/xdo/repository/Reports/Guest/
           => `*skip*/xdo/repository/Reports/Guest/.listing'
Устанавливается соединение с *skip*... соединение установлено.
Выполняется вход под именем *login* ... Выполнен вход в систему!
==> SYST ... готово.  ==> PWD ... готово.
==> TYPE I ... готово.   ==> CWD /xdo/repository/Reports/Guest ... готово.
==> PASV ... готово.  ==> LIST ... готово.
 
     0K .......... .......... .......... .......... .......... 1,75M
    50K ..                                                     3,39M=0,03s
 
2013-07-10 08:13:14 (1,80 MB/s) - `*skip*/xdo/repository/Reports/Guest/.listing' сохранён [54116]
 
ЗАВЕРШЕНО --2013-07-10 08:13:14--
Загружено: 1 файлов, 53K за 0,03s (1,80 MB/s)

 
кусочек получившегося .listing:

Цитата:
 
drw-r--r--   2 XDB      oracle         0 JUL 06 18:42 .
drw-r--r--   2 XDB      oracle         0 JUL 06 18:42 ..
drw-r--r--   2 XDB      oracle         0 JAN 11 06:48 00001
drw-r--r--   2 XDB      oracle         0 JUN 30 00:38 00001CRED
drw-r--r--   2 XDB      oracle         0 APR 20 01:02 00001_01
drw-r--r--   2 XDB      oracle         0 JAN 11 06:48 00001val
 

Всего записей: 39 | Зарегистр. 18-04-2008 | Отправлено: 07:22 10-07-2013 | Исправлено: Anton Nikolaev, 07:23 10-07-2013
Anton Nikolaev

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

Всего записей: 39 | Зарегистр. 18-04-2008 | Отправлено: 16:30 10-07-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
Anton Nikolaev
 
На сервере похоже протокол WebDAV использован, а с ним известны проблемы.

Отправлено: 17:09 10-07-2013
Anton Nikolaev

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Victor_VG, очень вряд ли. Старый FAR 1.7 со встроенным еще более древним ftp-плагином отлично всё копирует.

Всего записей: 39 | Зарегистр. 18-04-2008 | Отправлено: 17:41 10-07-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
Anton Nikolaev
 
Как вариант активный режим FTP что не все сервера допускают. В большинстве современных FTP-клиентов по умолчанию задан пассивный режим, да и брандмауэр мог вмешаться в события.

Отправлено: 18:07 10-07-2013
Anton Nikolaev

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
даже ftp.exe работает нормально (а он вообще в пассивном не умеет), только каталоги рекурсивно качать не умеет.

Всего записей: 39 | Зарегистр. 18-04-2008 | Отправлено: 18:09 10-07-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:45:24 (c) xForumSaver