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

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто-нибудь может помочь в следующей ситуации - надо чтобы wget проверял обновление файлов на сервере, если на сервере файл новый то скачал и выполнил еще дополнительные действия. Попробовал реализовать через батник
Код:
wget -P d:\distr\kav\ -N http://downloads.kaspersky-labs.com/zips/av-i386-daily.zip
@if %ERRORLEVEL%==0 goto eof
"c:\program files\winrar\winrar.exe" e -y -ibck "d:\distr\kav\av-i386-daily.zip" "d:\distr\kav\update\"
rem start kav update
:eof
, но при этом ERRORLEVEL всегда 0 не зависимо закачивался файл или нет.

Всего записей: 568 | Зарегистр. 18-03-2003 | Отправлено: 20:55 24-09-2008
SergN77

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не знаю как заставить wget скачивать файлы только если удаленные и локальные файлы различаются размером (время модификации может быть разным). Возможно ли такое?
Дело в том, что параметр -N делает сравнение и по дате последней модификации и по размеру, а так чтоб сравнение было только по размеру я не нашел параметра.

Всего записей: 9 | Зарегистр. 18-06-2007 | Отправлено: 17:32 27-09-2008 | Исправлено: SergN77, 17:36 27-09-2008
juvaforza

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

Цитата:
@if

А если @ убрать?

Всего записей: 2881 | Зарегистр. 25-11-2005 | Отправлено: 21:51 27-09-2008
dad1969

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
juvaforza
@ только подавляет отображение этой строки в консоли при выполнении. На суть не влияет. Вопрос в возврате wgetа.

Всего записей: 568 | Зарегистр. 18-03-2003 | Отправлено: 22:03 27-09-2008
basstard

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не могу найти инфу о том, сколько соединений Wget одновременно открывает и как это изменить
 
ситуация в следующем:
Есть программа (WebSite-Watcher), которая мониторит ресурс на наличие новых ссылок;
когда новые ссылки появляются, WebSite-Watcher может передать их любой другой программе, например Wget;
но объединить все ссылки в один список нельзя, все, что можно, это многочисленная (штук 5 в секунду) последовательность вызовов с новыми и новыми ссылками, примерно так:
 
wget http://page1
wget http://page2
wget http://page3
wget http://page4
wget http://page5
 
Вопрос: будет ли при таких условиях каждый раз запускаться новый экземпляр Wget, или все последующие вызовы будут обрабатываться уже существующим
 
И главное: возможно ли, чтобы при каждом новом вызове, wget не начинал загрузку сразу, а подождал, пока закончится уже запущенная, или добавлял новую в очередь, или ограничить кол-во max соединений с конкретным сервером
 
Добавлено:
Как в Wget заполнить REFERER?

Всего записей: 58 | Зарегистр. 05-08-2008 | Отправлено: 18:27 01-10-2008
BakLAN



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
basstard
wget --referer=URL http://ссыла...

Всего записей: 2788 | Зарегистр. 15-12-2003 | Отправлено: 22:38 01-10-2008
basstard

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BakLAN
Спасибо, с referer'ом получилось!
 
Как его заставить, когда он получает 404-ю ошибку не прерывать выгрузку,
а продолжать попытки: -t inf в этом случае не помогает

Всего записей: 58 | Зарегистр. 05-08-2008 | Отправлено: 01:49 02-10-2008
Aeismann



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
basstard
1) Если запускаешь из батника, то вторая строка не запустится, пока не отработает первая
2) Коннект у вгета только один (для фтп-два), многопоточность не реализована "чтобы не нагружать сервера"
3) что мешает сделать так:
echo url1 > links.lst
echo url2 > links.lst
echo url3 > links.lst
echo url4 > links.lst
echo url5 > links.lst
wget --input-file links.lst

Всего записей: 174 | Зарегистр. 24-10-2006 | Отправлено: 11:57 02-10-2008
Panzer

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Может ли wget писать в лог не только время, но и дату начала работы?

Всего записей: 1681 | Зарегистр. 23-10-2003 | Отправлено: 16:59 04-10-2008
XXXXL



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте!
Помогите заставить wget сохранять текстовые файлы с кодировкой ANSI.
Спасибо!

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 17:27 14-10-2008
Alex Dragon



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XXXXL, попробуйте опцию --user-agent=, прописать в ней юзер-агента вашего браузера или типичный для Эксплорера. Обычно мудаковатые сайтописатели заворачивают в KOI8-R всё, что не Эксплорер, чуток более умные детектят Мозиллу и Оперу.
 
Посмотреть user-agent своего браузера можно вот таким маленьким скриптом:
 
<SCRIPT LANGUAGE="JavaScript">
<!--
document.write("User Agent: " + navigator.userAgent);
// -->
</SCRIPT>

Всего записей: 368 | Зарегистр. 05-01-2002 | Отправлено: 20:54 14-10-2008 | Исправлено: Alex Dragon, 21:11 14-10-2008
XXXXL



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex Dragon, честно говоря, я не понял как эту опцию использовать ((( вот, что паказывает скрипт: User Agent: Opera/9.51 (Windows NT 5.1; U; ru)

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 13:42 15-10-2008
Bambarbiya_kergudu

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А wget может использовать куки оперы? Если да, то как это возможно реализовать?

Всего записей: 11 | Зарегистр. 30-06-2007 | Отправлено: 17:48 15-10-2008
Alex Dragon



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XXXXL, ну и пишешь:
 
wget.exe --user-agent="Opera/9.51 (Windows NT 5.1; U; ru)" http://www.xxx.xxx/index.html
 
Или, для верности, попробуй подставить ту же строку, но из Эксплорера.
У меня это будет
 
wget.exe --user-agent="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322)" http://www.xxx.xxx/index.html
 
Добавлено:
Bambarbiya_kergudu, ну разве что ручками нужный файл написать. Открываешь настройки укисов в Опере, выбираешь нужный сайт и копируешь по очереди все значения в текстовый файлик специального формата, в таком Мозилла кукисы хранит.

Всего записей: 368 | Зарегистр. 05-01-2002 | Отправлено: 20:56 15-10-2008 | Исправлено: Alex Dragon, 20:57 15-10-2008
Bambarbiya_kergudu

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex Dragon, у меня есть несколько вопросов:
 

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

Как копировать? просто пупо с новый строки?
 

Цитата:
текстовый файлик специального формата

Какого?
 

Цитата:
в таком Мозилла кукисы хранит.

Она хранит куки в cookies.sqlite а он зашифрованный

Всего записей: 11 | Зарегистр. 30-06-2007 | Отправлено: 14:19 16-10-2008
avkorets



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребят подскажите.
Как заставить работать через прокси с использованием сценария автоматической настройки?
А то чот по таймауту вываливаецо...
файервол еще может резать?как обойти?
 
Добавлено:
версия wget 1.10.2

Всего записей: 81 | Зарегистр. 08-09-2008 | Отправлено: 07:49 17-10-2008
VXC



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ребят помогите один запрос выполнить.
Нужно скачать файл с imageshack.us.
Для того чтобы его скачать нужно авторизоваться.
Авторизовался в IE. в  C:\Documents and Settings\имя\Cookies упа файлик к куками.
 
в wget вбиваю
wget -b --load-cookies cookies.txt URL до файла
 
не авторизовываеся.Подскажите что делаю не так.

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

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VXC
Cookies.txt перед скачиванием нужно сохранить wget-ом. Судя по странице авторизации пробуй так:

Код:

wget --user-agent="Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" --save-cookies cookies.txt --post-data "[email protected]&password=123456" http://my.imageshack.us/auth.php -O-

Вместо [email protected] свое мыло, вместо 123456 свой пароль. Если не сохранит - попробуй сменить в [email protected] "собаку" на %40, или, если из батника запускаешь на %%40. Если опять не сохранит - отпишись тут, я там зарегистрируюсь и поподробней посмотрю на процесс логина.

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



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
igor_andreev , ты просто вошлебник!!!Огромное спасибо!
Если не трудно объясни пару нюансов
Ты в html коде раскопал что переменные называются именно username и password?
 
А почему тогда wget не понял куки сделанные IE?в мануале по wget'у написано что должен понимать))
 
Еще раз огромное спасибо.Не перестаю приятно удивляться этому форуму.

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



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

Цитата:
Цитата:
в таком Мозилла кукисы хранит.
 
Она хранит куки в cookies.sqlite а он зашифрованный

Есть расширение Export Cookies ,которые экспортирует куки из Firefox в формат Netscape,используемый в IE.Судя по описанию он сделан специально для wget

Цитата:
Exports all cookies in IE manner.
Makes a Netscape standard cookies.txt file.
Very useful for WGET --load-cookies option.  

https://addons.mozilla.org/ru/firefox/addon/8154
Проверено,работает.

Всего записей: 3469 | Зарегистр. 05-01-2006 | Отправлено: 08:54 12-11-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:09 (c) xForumSaver