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



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
andrecool
> Но вот беда, не знание английского и пользуюсь переводчиком, и не всегда понимаю смысл этого перевода.
Вы невнимательно читали шапку. :-) Там есть ссылка на русский ман. Он, конечно, не вполне актуален, но если с английским настолько плохо, что непонятны маны, то сойдет.
 
Добавлено:
SkaBoy1
 
SkaBoy1 (10:19 09-10-2013)
Цитата:
Добрый день!
Есть задача - скачать с netprint.ru альбомы с фото, пытался решить проблему разными способами, но все сводится к wget. Сам не сильно в нем разбираюсь, поэтому прошу Вашей помощи.
Необходимо загрузить фото из альбомов по ссылкам вида http://www.netprint.ru/moscow/136/965560/x/ (где x число от 0 до последней фото в альбоме - 1), причем возможно это только при введенном логине и пароле (в браузере), браузер после ввода ссылки возвращает (насколько я понимаю) ссылку непосредственно на файл (вида http://www.netprint.ru/moscow/136/965560/0/IMG_6928.jpg).
 
Очень хочу решить этот вопрос, т.к. это единственное место где остались мои фотографии (оригиналы умерли на старом харде), находил плагины к total commander для загрузки из netprint.ru, но они предлагают загрузку только без пароля (в низком разрешении, а не оригиналы) и не работают. Обращался к администрации netprint, они в помощи отказали.
 
Скажите впринципи - возможно ли это сделать wget, или нужно искать другие способы? В какую сторону вообще копать. Готов предоставить любую дополнительную информацию.
 
Заранее премного благодарен.  

 
Может быть, удобнее будет и не Вэ-гет. Плюс тут, скорее всего, еще не закончена беседа с тов. Andrecoolом, поэтому пойдемте-ка в ветку «Рекурсивная загрузка веб-сайтов».
 


----------
Спроси, где спросить!

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 14:37 09-10-2013
andrecool

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG  
Wget у меня качает отлично! Я не могу  написать скрипт что бы на выходе получался архив со скаченными файлами.

Всего записей: 18 | Зарегистр. 21-09-2013 | Отправлено: 16:27 09-10-2013 | Исправлено: andrecool, 16:31 09-10-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
andrecool
 
Я вам дал скрипт, вы его объявили "не рабочим" даже не посмотрев что и как он делает. В таком случае зачем мне вам помогать дальше? Тем более учитывая что вы не первый так поступаете. Какой мне смысл при таком отношении кому то помогать? Проще сказать и уйти заниматься своими делами.

Отправлено: 16:36 09-10-2013
andrecool

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Victor_VG
Цитата:
Я вам дал скрипт, вы его объявили "не рабочим" даже не посмотрев что и как он делает.
Не говорил я такого, а сказал что не пойму как правильно вписать адреса  в ваш скрипт.
Господа хорошие! ...не пинайте сильно, лучше помогите чайнику.

Всего записей: 18 | Зарегистр. 21-09-2013 | Отправлено: 16:56 09-10-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
andrecool
 
Ладно, на пальцах:
 
у скрипта есть шесть параметров которые разделяются пробелами. Первый имя пользователя, второй пароль, третий первый линк - полное доменное имя сервера, т.е. HTTP://server.com/путь до каталога начала резервирования, четвёртый каталог откуда начинаем резервирование. Пятый и шестой аналогичны параметрам три и четыре.
 
Вид параметров три и пять - ftp://ftp.имя_сервера/мой_домен/www
а параметров четыре и шесть - имя каталога.
 
Команду можно доработать и упростить скрипт выбросив фрагмент &&del /f/s/q ./backup/*.listing - он удаляет случайные файлы листинга если они и появятся. Пробуйте так.

Отправлено: 18:21 09-10-2013
andrecool

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

Код:
@echo off  
@echo "%1 - мое_name"  
@echo "%2 - мой_password"  
@echo "%3 - ftp://ftp.имя_сервера/мой_домен/www"  
@echo "%4 - папка_1"  
@echo "%5 - ftp://ftp.имя_сервера/мой_домен/www"  
@echo "%6 - папка_2"  
wget  --recursive --timestamping --level=inf --no-host-directories --cut-dirs=2 --directory-prefix=backup --user=%1 --passwd=%2 %3/%4/ %5/%6/&&7z.exe -a -tzip %4-%DATE%-backup.zip %4*&&7z.exe -a -tzip %6-%DATE%-backup.zip %6*&&rdmdir /s/q ./backup&&exit

так тоже не получается.

Всего записей: 18 | Зарегистр. 21-09-2013 | Отправлено: 18:36 09-10-2013 | Исправлено: andrecool, 18:42 09-10-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
andrecool
 
Давайте по логам смотреть. Хотя, хотя ... Есть одна идея, очень вероятно что она у нас и сработает. Обмозгую - отвечу.
 
Давайте так попробуем его запуск:
 
backurl.cmd

Цитата:
@echo off
@echo "%1 - user_name"
@echo "%2 - user_password"
@echo "%3 - URL1 w/o distantion folder"
@echo "%4 - distantion folder 1"
@echo "%5 - URL 2  w/o distantion folder"
@echo "%6 - distantion folder 2"
wget --recursive --timestamping --level=inf --no-host-directories --cut-dirs=2 --directory-prefix=backup --user=%1 --passwd=%2 %3/%4 %5/%6&&7z.exe -a -tzip %4-%DATE%-backup.zip %4*&&7z.exe -a -tzip %6-%DATE%-backup.zip %6*&&rdmdir /s/q %4*&&rmdir /s/q %6*&&exit

backurl usrname usrpaswd URL1 URL2 DIR1 DIR2
 
и у нас возможен подвох - если имя/пароль пользователя будут иметь пробелы - получим проблему. Можно попробовать это обойти просто раскрыв скрипт и вписав в него параметры %1 и %2 , и уменьшив на два номера остальных. Не зная шаблон ваших имени/пароля - именно то есть ли там пробел или что ему подобно, приходится такой вариант пробовать.

Отправлено: 18:52 09-10-2013 | Исправлено: Victor_VG, 20:10 09-10-2013
andrecool

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Victor_VG  
добавил в коде  внизу pause что бы окно не закрывалось, и вот что пишет:

Код:
wget: unrecognized option `--passwd='
Usage: wget [OPTION]... [URL]...
 
Try `wget --help' for more options.
Для продолжения нажмите любую клавишу . . .

 
Добавлено:
Потом логин и пароль записал напрямую:

Код:
/: Unsupported scheme.
/: Unsupported scheme.
Для продолжения нажмите любую клавишу . .  
.
 
Добавлено:
Далее и адреса папок вписал напрямую:

Код:
Error:
Incorrect command line
Для продолжения нажмите любую клавишу . . .

 
и естественно это удалил:

Код:
@echo "%1 - user_name"  
@echo "%2 - user_password"  
@echo "%3 - URL1 w/o distantion folder"  
@echo "%4 - distantion folder 1"  
@echo "%5 - URL 2  w/o distantion folder"  
@echo "%6 - distantion folder 2"

Всего записей: 18 | Зарегистр. 21-09-2013 | Отправлено: 12:59 11-10-2013
Pasha_ZZZ



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
andrecool
Замени
Цитата:
--passwd=
на
Цитата:
--password=


Всего записей: 3758 | Зарегистр. 11-03-2002 | Отправлено: 13:29 11-10-2013
andrecool

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

Всего записей: 18 | Зарегистр. 21-09-2013 | Отправлено: 13:41 11-10-2013
LonerDergunov

Редактировать | Цитировать | Сообщить модератору
Здравствуйте.
Возможно ли (и каким образом) через Wget решить следующую задачу?
Имеется файл на локальном компьютере и файл где-то в интернете (http, ftp...), имена файлов разные. Нужно сравнить даты этих двух файлов и если в интернете более новый файл - то  нужно скачать его (указав место на жёстком диске для скачивания).
Если через Wget такое не реализовать, то через какую программу можно автоматизировать этот процесс?

Отправлено: 13:54 11-10-2013
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Только предварительно переименовав файл для совпадения имен. Но делать так не надо — слишком костыльно, а написать шелл-скрипт, решающий задачу нормально, проблемы не составит.
 
P. S. А если все-таки составит, то обращайтесь.

----------
Спроси, где спросить!

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 14:22 11-10-2013 | Исправлено: ASE_DAG, 14:24 11-10-2013
kost2005

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Господа, помогите пожалуйста со скриптом, ссылка примерно такого вида
.../imgfull/annunciazione_krpano/l5_(0...100)_(0...100).jpg
навсякий случай - "шаг" равен 1.
Заранее спасибо.

Всего записей: 432 | Зарегистр. 19-11-2005 | Отправлено: 23:29 12-10-2013 | Исправлено: kost2005, 23:30 12-10-2013
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kost2005, ваш вопрос непонятен.

----------
Спроси, где спросить!

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 23:52 12-10-2013 | Исправлено: ASE_DAG, 23:55 12-10-2013
kost2005

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
Вопроса как такового нет, мне бы скрипт полностью. Я в связи со скудостью ума не представляю как его написать, вот и прошу помощи.

Всего записей: 432 | Зарегистр. 19-11-2005 | Отправлено: 23:56 12-10-2013
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
> мне бы скрипт полностью.
Да это понятно. Непонятно, чего вы хотите. Перебор по всем возможным комбинациям:  
/imgfull/annunciazione_krpano/l5_0_0.jpg  
/imgfull/annunciazione_krpano/l5_0_1.jpg  
...
/imgfull/annunciazione_krpano/l5_0_100.jpg
/imgfull/annunciazione_krpano/l5_1_0.jpg
/imgfull/annunciazione_krpano/l5_1_1.jpg
...
/imgfull/annunciazione_krpano/l5_1_100.jpg
...
...
/imgfull/annunciazione_krpano/l5_100_0.jpg
...
/imgfull/annunciazione_krpano/l5_100_100.jpg

что ли?
 
А вот представьте себе, что почти именно так, как вы написали.
$ wget http://example.org/imgfull/annunciazione_krpano/l5_{0..100}_{0..100}.jpg

----------
Спроси, где спросить!

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 00:10 13-10-2013 | Исправлено: ASE_DAG, 00:10 13-10-2013
kost2005

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
Что-то у меня не получается...
 
http://www.haltadefinizione.com/hdimgsrc/12/imgfull/annunciazione_krpano/l5_01_01.jpg
...
http://www.haltadefinizione.com/hdimgsrc/12/imgfull/annunciazione_krpano/l5_67_148.jpg
 
получаю
 
$ wget-1.12 http://www.haltadefinizione.com/hdimgsrc/12/imgfull/annunciazione_krpano/l5_{00. .67}_{00. .148}.jpg
 
Wget выдаёт ошибку.
скриншот:
http://img-fotki.yandex.ru/get/9093/158908885.85/0_125888_59be06ce_orig
 
 
 
 

Всего записей: 432 | Зарегистр. 19-11-2005 | Отправлено: 00:49 13-10-2013
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Во-первых, кто вас надоумил вставлять текст картинкой? А во-вторых, это команда для Баша, а не для cmd.exe. В шапке это, кстати, написано.

----------
Спроси, где спросить!

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 00:55 13-10-2013 | Исправлено: ASE_DAG, 00:59 13-10-2013
kost2005

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
Теперь вижу, но легче мне от этого не стало, для cmd.exe я врядли сам смогу написать...
И совсем не понял - что значит текст картинкой?

Всего записей: 432 | Зарегистр. 19-11-2005 | Отправлено: 01:05 13-10-2013
kost2005

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
После долгих мучений...
path C:\Portable\wget
for /l %%j in (01,1,67) do (for /l %%i in (01,1,148) do wget "http://www.haltadefinizione.com/hdimgsrc/12/imgfull/annunciazione_krpano/l5_%%j_%%i.jpg" -O l5_%%j_%%i.jpg)
Но wget пишет ошибку 404, файл не найден. Где косяк? Будьте людьми - помогите.

Всего записей: 432 | Зарегистр. 19-11-2005 | Отправлено: 15:23 14-10-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:52 (c) xForumSaver