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

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dimbat
 
Может быть он Добавляет туда коды перевод строки и пр. В основном этот ключ используют для вывода на стандартный вывод "-О -". Скорее всего он применяется для сохранения HTML страниц -  они пишутся не каждая в свой файл а объединяются в один - ТОБОЙ УКАЗАННЫЙ файл
 
У меня вопрос по поводу косвенных ссылок на файл. как например получить прямую ссылку на файл вместо такой "http://robot.cons14.ru:8000/interactive/getFile.aspx?id=12056" и подставить к wget

Всего записей: 191 | Зарегистр. 19-11-2001 | Отправлено: 08:48 26-08-2009 | Исправлено: AndreyPA, 09:19 26-08-2009
korosya

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть ссылка типа http://prdownloads.sourceforge.net/akelpad/AkelPad-4.3.2-bin-rus.zip?download , причём цифры 4.3.2 меняются. Файлы на сеервере есть под номерами 4.3.2, 4.3.1, 4.3.0 .... На данный момент файл с номером 4.3.2 - последний. В последующем этот номер измениться. Можно ли скачать с помощью Wget скачать только последний файл?

Всего записей: 657 | Зарегистр. 19-07-2003 | Отправлено: 09:00 25-09-2009
iglezz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
korosya
Сам wget этого делать не умеет.

Всего записей: 573 | Зарегистр. 18-02-2003 | Отправлено: 12:06 25-09-2009
Molt



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

Цитата:
Сам wget этого делать не умеет

Зато wget может загружать страничку, где появляется актуальная ссылка и следовать по ней.

----------
"Give me the place to stand, and I shall move the earth" — Archimedes

Всего записей: 1299 | Зарегистр. 07-11-2004 | Отправлено: 22:35 25-09-2009
juvaforza

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GNU Wget 1.12
 
Changes in Wget 1.12
 
Скачать ( /wget-latest.tar.gz напр.)

Всего записей: 2881 | Зарегистр. 25-11-2005 | Отправлено: 00:03 26-09-2009 | Исправлено: juvaforza, 00:11 26-09-2009
Weinaum



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вопрос - с какими аргументами надо исполнять wget, чтобы максимально корректно скачать сайт целиком?
Я делаю wget -c -r -k -np http://www.сайт.ком - при этом меня удивила разница в результате, получаемом с помощью чистого wget и например WinWGet - при абсолютно одинаковых аргументах там и там получается сле-щее:
winwget

 
 
wget -  
 
 
 
при этом сам сайт  
 
 
В принципе, фиг с ним с гуем, но все равно не все  скачивается..
OfflineExplorer например скачивает все, но я там замечаю множество косяков еще в самых верхних слоях, которых при скачивании  wget -ом нет..
В общем, что я не учел?

Всего записей: 1773 | Зарегистр. 18-06-2006 | Отправлено: 01:12 26-09-2009 | Исправлено: Weinaum, 01:14 26-09-2009
juvaforza

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Weinaum
css-файлы скачались?
 
Добавлено:
обычным Wget?

Всего записей: 2881 | Зарегистр. 25-11-2005 | Отправлено: 03:38 26-09-2009
Weinaum



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

Цитата:
css-файлы скачались?
 
Добавлено:
обычным Wget?

И там и там скачивается только один CSS в корне - style.css

Всего записей: 1773 | Зарегистр. 18-06-2006 | Отправлено: 12:23 26-09-2009
korosya

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

Цитата:
Зато wget может загружать страничку, где появляется актуальная ссылка и следовать по ней.

Подскажи, пожалуйста, как автоматом скачать страничку, а через неё - необходимый файл. То есть мне надо запустить батник и получить в определённой папке последнюю версию AkelPad-а.
Заранее спасибо.

Всего записей: 657 | Зарегистр. 19-07-2003 | Отправлено: 16:50 27-09-2009 | Исправлено: korosya, 18:13 27-09-2009
iglezz

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

Код:
@echo off
wget -O "%TEMP%\akelpad" "http://akelpad.sourceforge.net/en/download.php"
FOR /F %%a IN ('grep -m1 -o "http://prdownloads.sourceforge.net/akelpad/AkelPad-4.*-bin-rus.zip" "%TEMP%\akelpad"') DO wget %%a
del /F /Q "%TEMP%\akelpad"
 

 
для выдергивания ссылки из странички в батнике использован grep из состава cygwin (как сделать это стандартными средствами я не знаю)

Всего записей: 573 | Зарегистр. 18-02-2003 | Отправлено: 00:30 29-09-2009
Weinaum



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Все таки еще раз.
Сегодня еще раз столкнулся с тем, что wget скачивает с нужного сайта не все файлы. Причем, как под виндой, так и линуксный. Причем, не могу понять принцип, по которому это происходит...Для примера - сайт очень простой, один уровень, скачивается вместо 8,5 только 5 с чем то мб. Не скачиваются несколько рисунков и несколько html страниц. Почему?
Посмотрите сами-  _удалено
Может, все таки какие то аргументы не учитываю?
 
все, разобрался,  wget надо было обновить до версии 1.12, чтоб css поддерживала...

Всего записей: 1773 | Зарегистр. 18-06-2006 | Отправлено: 12:24 20-10-2009 | Исправлено: Weinaum, 19:20 22-10-2009
Weinaum



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да,кстати, кто то если скомпилировал 1.12 для винды,  
подгоните плз...

Всего записей: 1773 | Зарегистр. 18-06-2006 | Отправлено: 18:37 23-10-2009
dimbat



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот нашел на форуме GnuWin32 скомпилированный WinWget 1.12

----------
In Search We Trust

Всего записей: 986 | Зарегистр. 23-08-2003 | Отправлено: 00:02 24-10-2009 | Исправлено: dimbat, 00:20 24-10-2009
Victor_VG

Редактировать | Цитировать | Сообщить модератору
dimbat
 
Кстати, исходники собрать можно, но майки придётся ручками писать. Уже пробовал - в основном исходники рассчитаны на сборку под UNIX.

Отправлено: 06:42 24-10-2009
BakLAN



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А чё их собирать-то? Там всё автоматизировано. Тем более подробно описано, как это делать на сайте из шапки.

Всего записей: 2788 | Зарегистр. 15-12-2003 | Отправлено: 22:14 05-11-2009
Victor_VG

Редактировать | Цитировать | Сообщить модератору
BakLAN
 
Не скажи. Под GCC/MinGW/Msys с ходу не собирается.Ты сам эти майки посмотри - это только заготовки, а всю их структуру надо ещё прописывать - configure это sh-скрипт и правильно он будет работать только под UNIX. Во всяком случае у меня получилось только так.

Отправлено: 06:42 06-11-2009
juvaforza

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

Цитата:
Не скажи.

Это проблемы 1.12. Автор несколько раз говорил в рассылке (в част. - здесь, оттуда и скомпилирован вышеуказанный файл), что сейчас из-за отсутствия времени в 1.12 есть проблемы с нормальной компиляцией программы под Windows, кроме Mingw (но получается даже с ним невозможно откомпилировать оригинальные исходники, хотя возможно там проблемы из-за новой версии компилятора), и что все проблемы должны быть решены в 1.12.1 .

Всего записей: 2881 | Зарегистр. 25-11-2005 | Отправлено: 10:26 06-11-2009 | Исправлено: juvaforza, 10:27 06-11-2009
Victor_VG

Редактировать | Цитировать | Сообщить модератору
juvaforza
 
Я её с SSL пытался несколько раз собрать в GCC 4.4.1 TDM-2 и GCC 4.5.0 - обломился. Ладно, подождём, а пока поиграем с FreeBSD 8 RC2 - сегодня руки дошли поставить на второй машине.

Отправлено: 10:34 06-11-2009
BakLAN



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Victor_VG
Я предпоследнюю версию собирал сам с поддержкой SSL, причем SSL тоже компилил сам. Про последнюю версию ничего не скажу. Может, действительно проблема есть, поэтому утверждать не буду. А с другой стороны, зачем Вам последнюю собирать, если уже есть скомпиленная по ссылке от juvaforza.
 
Добавлено:
Компилить Wget - это одно, а вот компилить Mplayer, это можно понять только попробовать. Вот, где гемор, так это компиляция Mplayer, особенно в static-режиме.

Всего записей: 2788 | Зарегистр. 15-12-2003 | Отправлено: 21:59 06-11-2009
Victor_VG

Редактировать | Цитировать | Сообщить модератору
BakLAN
 
Так и поступил. А MPlayer кстати под UNIX компилится элементарно, правда из одного пакета исходников. Под FreeBSD UNIX собирается одной командой  - make configure build install или ещё проще make install. Под Win с её дурью где sh нет - проблемы в полный рост встают. Я ведь не зря в компилятор bash/sh включил, да и в сборке Far Manager SE2 bash не просто так появилась. И кстати, кто уж погано собирается, так это сам Far в gcc - сменил оптимизацию в майке с -Ох на -О3 и бинарник больше не собирается - куча варнингов и ошибка 2 в линкере вдогонку. Ребятки там кучу "условностей" оставили - от неверно объявленных переменных, до просто не объявленных структур. Могу логи предложить глянуть - весёлое зрелище, уверяю. И это при том, что кое где совместными усилиями ошибки устранены. А иной раз он, да и его плагины просто не собираются - исходники меняют криво, либо включают свои либы которых нигде и нет. Или как последний раз подключили SDK Win7 которого и на сайте Микрософт в тот момент ещё не было. Исходники ни в чём не собирались ни в gcc, ни в MS VC++. После ругани исправили, но как всегда молча. Сиё уже у Far и его плагинов традиция, я например к этому давно привык, просто молча логи коллекционирую.

Отправлено: 22:44 06-11-2009 | Исправлено: Victor_VG, 23:04 06-11-2009
Открыть новую тему     Написать ответ в эту тему

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

.