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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Прошу помощи, сабжем пользоваться не умею, сколько не ломал голову над ним, так и не получилось ничего сделать =(
 
http://radjik.blogspot.com/2010/03/wwwpixivnet.html
я так и не понял как сделать нормально батник чтобы он начал качать как по инструкции
 
Поэтому, прошу помощи)) помогите написать нормальный батник, и текстовик(куки?) в котором, как я понял будут лежать логин и пароль, собсна по ссылке выше всё сами поймёте.
 
Заранее огромное спасибо откликнувшимся на помощь
 
Забыл добавить, для проверки можете использовать

Всего записей: 10 | Зарегистр. 19-09-2010 | Отправлено: 15:32 19-09-2010 | Исправлено: H4rDc0r3, 15:54 19-09-2010
uglypod



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
H4rDc0r3
 
дак там же на баше скрипт написан
это вам в другой раздел надо

Всего записей: 115 | Зарегистр. 21-11-2007 | Отправлено: 15:51 19-09-2010
H4rDc0r3

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

Цитата:
uglypod

 
можно поточнее что как и куда)))
заранее благодарю
и можно ли этот баш скрипт под windows 7 сделать? или только под UNIX OS?

Всего записей: 10 | Зарегистр. 19-09-2010 | Отправлено: 15:55 19-09-2010 | Исправлено: H4rDc0r3, 16:19 19-09-2010
igor_andreev

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

Цитата:
никак не удается залогиниться на сайте  
в батнике написала как в мануале дано http://user:[email protected]  
все равно скачивается индексная страничка без авторизации и в закрытый док не пукает

 

Код:
 
wget --keep-session-cookies --save-cookies COOKIE.TXT --post-data "login=твой_логин&password=твой_пароль" "http://nnm.ru/login/" -O -
wget --load-cookies COOKIE.TXT http://nnm.ru/что_скачивать
 

Всего записей: 1595 | Зарегистр. 08-12-2004 | Отправлено: 19:39 19-09-2010
Victor_VG

Редактировать | Цитировать | Сообщить модератору
H4rDc0r3
 
Можно. Достаточно саму bash/sh установить. Но скорее всего потребуется CygGwin или Msys установить. Имеющиеся Windows реализации мягко сказать работают не точно.

Отправлено: 21:32 19-09-2010 | Исправлено: Victor_VG, 10:45 20-09-2010
aChikatillo

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите пожалуйста:
Нужно с ftp://xxx/ скачать архив только с сегодняшней датой создания, архив примерно 1ГБ поэтому надо что бы закачка продолжилась автоматически после возобновления работы инета..
P.S. На Win2003.

Всего записей: 245 | Зарегистр. 18-10-2007 | Отправлено: 09:45 20-09-2010 | Исправлено: aChikatillo, 09:49 20-09-2010
sis_terr



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
aChikatillo
читай из шапки
Документация:  
Параметры программы WGET [?] (рус.)
команды -c докачка,-N новые файлы и полистай несколько страниц топика назад,  
подобное уже спрашивали
 
igor_andreev
все равно скачивает index.html незалогиненный,
если заходить на сайт через ИЕ, то нажатие кнопки вход , (http://nnm.ru/login/)
даже при введенном логине-пароле перебрасывает на страничку с капчей,
Опера как то это дело обходит, Сtrl+Enter и мы на сайте

----------
жительница мульки

Всего записей: 1271 | Зарегистр. 20-12-2007 | Отправлено: 17:18 20-09-2010 | Исправлено: sis_terr, 18:20 20-09-2010
igor_andreev

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

Цитата:
все равно скачивает index.html незалогиненный

Мистика... У меня скачивает все как надо, страничку с моим логином, ссылками типа "Личная почта", "Черновики" и пр.

Всего записей: 1595 | Зарегистр. 08-12-2004 | Отправлено: 20:42 20-09-2010
sis_terr



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
igor_andreev
блин,, получилось, у меня стоял Wget не классичесский, а с иконкой отсюда с шапки
от проекта GnuWin32. остальное буду пробовать завтра , пасиб за помощь  
***
изменила параметры в старом батнике как Вы указали,
 все качает как надо по списку с нужных блогов
Есть ли где почитать на русском об таком залогинивании?

----------
жительница мульки

Всего записей: 1271 | Зарегистр. 20-12-2007 | Отправлено: 00:11 21-09-2010 | Исправлено: sis_terr, 17:02 21-09-2010
aChikatillo

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Сделал батник wget -N ftp://ххх
Качает, но если падает инет процесс закрывается и дальше тишина... Как сделать что бы процесс закрывался лишь только в случае успеха скачивания файла?

Всего записей: 245 | Зарегистр. 18-10-2007 | Отправлено: 10:08 21-09-2010
igor_andreev

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

Цитата:
Как сделать что бы процесс закрывался лишь только в случае успеха скачивания файла?

Лог файл вгет-а можно читать(искать там "saved" или "100%") и в зависимости от этого что-то делать. Типа:

Код:
 
@echo off
 
:loop
wget -o LOG.TXT ftp://ftp.lalala.com/file.ext
find " saved [" LOG.TXT || goto :loop
 

Всего записей: 1595 | Зарегистр. 08-12-2004 | Отправлено: 10:41 21-09-2010
aChikatillo

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
@ECHO off
:loop
wget -o LOG.TXT -N ftp://ххх/*.*
find " saved " LOG.TXT || goto :loop
 
И все равно закрывается -  в логе  -  Connecting to ххх... failed: Network is unreachable.
 
Помоги плиз не сильно с этим дружу...
 
Добавлено:
Все разобрался, я просто проверял падение инета путем отключения сетевого интерфейса) поэтому и failed: Network is unreachable.
 
Вообщем все отлично работает:
@ECHO off
:loop
wget -t 0 -o LOG.TXT -P D:/save -N ftp://ххх/*.*
find " saved " LOG.TXT || goto :loop
 
Качает новый файл c фтп  , если в логе есть  saved то скачали без проблем, закрываем...

Всего записей: 245 | Зарегистр. 18-10-2007 | Отправлено: 10:50 21-09-2010 | Исправлено: aChikatillo, 14:36 21-09-2010
igor_andreev

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

Цитата:
Качает новые файлы на фтп  

Ээ-э, ты спрашивал "Как сделать что бы процесс закрывался лишь только в случае успеха скачивания файла?". Для одного файла я пример и написал.
Если скачивать по маске, то wget может скачать один файл, записать в лог "saved", а остальные может не скачать из-за обрыва соединения или еще чего, а такой батник благополучно прекратит работу, потому как "saved" в логе будет...
Тут нужно что-то другое, например скачивать файлы по списку(-i files.lst) и тогда в логе в последней строчке будет что-нибудь вроде "Downloaded: 12 files, 680K in 5m 16s (220 B/s)
"... И плясать(find) уже от этой строчки.

Всего записей: 1595 | Зарегистр. 08-12-2004 | Отправлено: 14:29 21-09-2010 | Исправлено: igor_andreev, 14:34 21-09-2010
aChikatillo

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Сори опечатка, скачивается) Меня все устраивает, т.к. новый файл на фтп сервере будет добавляться 1н..

Всего записей: 245 | Зарегистр. 18-10-2007 | Отправлено: 14:34 21-09-2010
sis_terr



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
на ХР после окончания закачки окошко Wget закрывается само,  
а на Win98 остается висеть с сообщением “Сессия завершена”,
 что надо дописать в батник чтоб окошко закрывалось без лишних кликов?

----------
жительница мульки

Всего записей: 1271 | Зарегистр. 20-12-2007 | Отправлено: 17:18 21-09-2010 | Исправлено: sis_terr, 17:43 21-09-2010
ndch

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Такая трабла:
wget http://partner.atheros.com/Download.aspx?id=28 --post-file=form --content-disposition
 
файл form:
Подробнее...
 
не сохраняется с "оригинальным" именем.
Та же беда и с curl
download manager, reget - скачивают с "оригинальным" именем.
Кто виноват, что делать ?

Всего записей: 4388 | Зарегистр. 31-08-2008 | Отправлено: 10:16 22-09-2010 | Исправлено: ndch, 13:49 22-09-2010
aChikatillo

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

Цитата:
например скачивать файлы по списку(-i files.lst)

А если имена файлов неизвестно но известно их количество?

Всего записей: 245 | Зарегистр. 18-10-2007 | Отправлено: 11:19 22-09-2010
sis_terr



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
aChikatillo
а расширение известно?

Всего записей: 1271 | Зарегистр. 20-12-2007 | Отправлено: 15:41 22-09-2010
aChikatillo

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

Цитата:
а расширение известно?

Суть вот в чем:
на фтп есть 10 архивов, спустя время появится еще 10 но новой даты и так каждую неделю...
в итоге в конце месяца их в папке будет 40, будут ли они удаляться каждый месяц или два неизвестно..
Лучше что бы было примерно так:
проверяем есть ли новые файлы на фтп, если есть то сколько их, и вот число уже у нас есть дальше пляшем по стандарту выше..

Всего записей: 245 | Зарегистр. 18-10-2007 | Отправлено: 16:02 22-09-2010 | Исправлено: aChikatillo, 16:05 22-09-2010
sis_terr



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
aChikatillo
я бы, в таком случае, читала мануал про команды -N -Rlist -Alist

Всего записей: 1271 | Зарегистр. 20-12-2007 | Отправлено: 16:32 22-09-2010
Открыть новую тему     Написать ответ в эту тему

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