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

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

Цитата:
ты просто вошлебник!!!

вошлебник... Ну хоть ушлепком не обозвал и то хорошо

Цитата:
Если не трудно объясни пару нюансов  
Ты в html коде раскопал что переменные называются именно username и password?

Раньше да, за этим в код страницы лазил, сейчас стал толстым и ленивым, пользуюсь ieHTTPHeaders Ткнул на imageshack в "Login", выскочило окошко авторизации, от балды ввел логин и пароль и попытался войти. Мне естественно дали отлуп, но ieHTTPHeaders уже показал все, что нужно для авторизации.


Цитата:
А почему тогда wget не понял куки сделанные IE?в мануале по wget'у написано что должен понимать))  

Каюсь, мануал не читал давно , но по моему там было написано, что в формате Netscape, как собственно mithridat1 и написал. Кстати curl понимает cookie, сохраненные wget-ом и наоборот.
 
 
 

Всего записей: 1595 | Зарегистр. 08-12-2004 | Отправлено: 13:59 12-11-2008 | Исправлено: igor_andreev, 14:02 12-11-2008
VXC



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

Цитата:
вошлебник... Ну хоть ушлепком не обозвал и то хорошо  

упс,сорри на эмоциях писал.
Спасибо за инфу,ушел качать ieHTTPHeaders

Всего записей: 68 | Зарегистр. 10-02-2005 | Отправлено: 16:21 12-11-2008
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кстати, если кто не в курсе - Bart Puype скомпилил таки 1.11.4. Я его wget-ами пользуюсь, он обычно беты не компилирует, выжидает, пока все глюки пофиксят. И дополнительных библиотек его сборки не требуют.
http://users.ugent.be/~bpuype/wget/

Всего записей: 1595 | Зарегистр. 08-12-2004 | Отправлено: 15:53 13-11-2008
BakLAN



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А что есть проблемы с компиляцией этой версии? Я уже давненько её себе скомпилил плюс библиотеки OpenSSL последней версии. Работает на ура. Правда, компилил сугубо под свой проц - K6-II+ (в компилере оптимизацию выбирал для K6-III).

Всего записей: 2788 | Зарегистр. 15-12-2003 | Отправлено: 22:31 13-11-2008
igor_andreev

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

Цитата:
А что есть проблемы с компиляцией этой версии?

Наверно нет. Только wget от Bart Puype работает абсолютно везде, на Pentium II 366, голая NT4 SP6a, на P3, голая Win2000 SP4... Можешь попробовать. То есть я уверен, что принесу wget на флешке кому-нить и он будет выполнять свои функции. Сие для меня есть главный признак хорошей консольной утилиты. А wget, которые выкладывают в этом топике, почему-то большей частью требуют чтоб еще стояли какие-нить библиотеки, c++ 200? redistributable или еще что...

Всего записей: 1595 | Зарегистр. 08-12-2004 | Отправлено: 13:56 14-11-2008
juvaforza

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

Цитата:
почему-то

потому что откомпилированы с помощью VS 2003-08. А использования VC++ (как и делает Bart Puype) или gcc (им пользуется BakLAN) в этом смысле одинаково.
 
Добавлено:
архив рассылки теперь будет ввестись на новом месте http://lists.gnu.org/archive/html/bug-wget

Всего записей: 2881 | Зарегистр. 25-11-2005 | Отправлено: 15:35 14-11-2008 | Исправлено: juvaforza, 15:43 14-11-2008
BakLAN



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да, Wget компилю без проблем, осталось только осилить компиляцию MPlayer`а, а это уже значительно сложнее.  

Всего записей: 2788 | Зарегистр. 15-12-2003 | Отправлено: 18:27 14-11-2008
xChe



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите плиз... Недавно DrWeb поменял схему авторизации на страничке скачивания бета-тестерского ключа. Пытаюсь получить ключ при помощи такой конструкции:
 
wget --user-agent="Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" --post-data "login=[логин]&password=[пароль]&p=win" --keep-session-cookies --output-document=c:\Program Files\DrWeb\drweb32-betatesting.key --referer="http://new-beta.drweb.com/files/?p=%2Fwin" "http://new-beta.drweb.com/files/?p=win%2Fdrweb32-betatesting.key&t=f"
 
В результате скачивается хтмл-страничка, содержащая ключи, а сам ключ - фих
Я так понимаю, что авторизация проходит, а вот как зацепить сам ключ?

Всего записей: 2956 | Зарегистр. 07-05-2006 | Отправлено: 20:09 14-11-2008
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xChe
1. Если в пути есть пробелы - обязательно брать в кавычки
--output-document="С:\Program Files\DrWeb\drweb32-betatesting.key"
2. Если запускаешь из батника - в URL знаки процента удваивай(%%2F)

Код:

@echo off
wget --save-cookies cookies.txt --post-data "login=ТВОЙЛОГИН&password=ТВОЙПАРОЛЬ" http://beta.drweb.com/files/ -O-
wget --load-cookies cookies.txt "http://beta.drweb.com/files/?p=win%%2Fdrweb32-betatesting.key&t=f" -O drweb32-betatesting.key


Всего записей: 1595 | Зарегистр. 08-12-2004 | Отправлено: 22:13 14-11-2008
xChe



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всё работает! Огромное спасибо!

Всего записей: 2956 | Зарегистр. 07-05-2006 | Отправлено: 22:34 14-11-2008
XXXXL



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте!
Тут такая проблемка возникла:
Вгету подкидывает одна программка линки, которые нужно качать, и вот если программка глюкнула, то она даёт кривой линк на не существующий сервер, Wget пытаеться подключиться и после неудачной попытки просто выключает весь батник, хотя нужно, что бы батник выполнил оставшиеся команды, которые идут после вгета(((
 
Господа умельцы, подскажите как можно избежать отключение батника?

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 23:16 21-11-2008
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XXXXL
Маловероятно, чтобы wget влиял на следующие после него команды в батнике. Если линк на несуществующий сервер - wget просто напишет че-нить типа "unable to resolve host address" и все, батник дальше будет работать. Сам cmd.exe скорее всего неправильно реагирует, может в линке апостроф попадается или еще какой символ. Или сам батник с ошибкой написан.
 
В команду на запуск wget в батник добавь ведение лог-файла(-o log.txt) и в следующий раз, когда глюканет - URL, на котором батник скуксился, текст лога и текст батника в студию.

Всего записей: 1595 | Зарегистр. 08-12-2004 | Отправлено: 23:48 21-11-2008 | Исправлено: igor_andreev, 23:49 21-11-2008
XXXXL



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
igor_andreev
Батник написан правильно, там после вызова вгета всего несколько простых команд "del", "rename" и повторный запуск этого же батника.
Добавлю (-o log.txt)
 
Спасибо!

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 14:08 22-11-2008
Victor_VG

Редактировать | Цитировать | Сообщить модератору
XXXXL
igor_andreev
 
Вот черти полосатые назвали тему так, что порт для FreeBSD уже не добавить. Собрал последнюю версию 1.11.4 с поддержкой SSL. На серверах будет утром - сейчас ещё несколько портов надо скомпилить, не до выгрузки...

Отправлено: 02:52 23-11-2008
Victor_VG

Редактировать | Цитировать | Сообщить модератору
Wget 1.11.4 SSL версия для FreeBSD 7, многоязычная - 38 языков включая и русский. Собрана из последних исходников с применением модифицированного порта.
 
P.S.
 
У меня сегодня день "премьер" - на сервера в общей сложности только за сегодня уже выгрузил 9 программ, будет и ещё. За последние 5 дней - 13 анонсов программ.

Отправлено: 02:51 27-11-2008
zzxx1488

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
wget научился работать с сокс5 протоколом?

Всего записей: 62 | Зарегистр. 04-10-2008 | Отправлено: 08:52 27-12-2008
mithridat1



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

Всего записей: 3469 | Зарегистр. 05-01-2006 | Отправлено: 09:31 27-12-2008
zzxx1488

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
плохи дела да?
на самом деле очень необходимо работать с сокс5, поэтому юзаю curl, а wget привычней как-то, у меня версия GNU Wget 1.8.1 с поддержкой ссл, там только опция --proxy, и та не пашет впринципе )
 

Всего записей: 62 | Зарегистр. 04-10-2008 | Отправлено: 09:42 27-12-2008 | Исправлено: zzxx1488, 09:43 27-12-2008
pppppppp

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите решить задачку =)
 
Есть у меня файл со списком URL адресов, который я скармливаю wget'у, НО нужно что бы были загружены файлы, размер которых меньше 10 МБ ! (иногда попадаются ссылки на файлы 100 и более МБ, так вом мне нада, что бы wget увидив что размер больше определенного и не качал этот файл).
 
Возможно ли такое сделать?

Всего записей: 12 | Зарегистр. 11-08-2006 | Отправлено: 19:18 27-12-2008
Aeismann



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
pppppppp, имхо нельзя.
zzxx1488, поддержка соксов только для никс-систем, под винды нет нужных заголовочных файлов

Всего записей: 174 | Зарегистр. 24-10-2006 | Отправлено: 21:48 28-12-2008
Открыть новую тему     Написать ответ в эту тему

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