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

Редактировать | Цитировать | Сообщить модератору
SergWB
 
Есть ещё один вариант, но он потребует работы оператора - Far Manager 3.0 + плагин NetBox. Оба понятно консольные. Удобство - можно выбрать то, что нужно прямо в панели плагина и поставить в фоновую закачку. А он сам всё заберёт. Вариант два - берём NSIS, пишем собственный парсер листинга под данный сервер, он генерит список линков и вызывает Wget. На NSIS написать такое реально, и не столь сложно - для этого есть куча встроенных функций и плагинов.

Отправлено: 03:54 06-04-2012
SergWB

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Victor_VG
 
Спасибо всем за ответы.
В google "Вопросы и ответы" спросил, мне подсказал хороший человек. Решение простое, просто я запутался в синтаксисе lftp.
Выглядит так:
lftp -e " mirror --newer-than='week ago'  source destination" -u user,pass host:port
Может еще кому-нибудь поможет.
А вообще, у меня там почти 2 тысячи подпапок, и lftp пролистывает их (зеркалирует) за 2,5 часа, wget справлялся быстрее, просто весь объем мне не нужен - негде хранить. lftp выбирает только новые/обновленные файлы, но по времени дольше.

Всего записей: 7 | Зарегистр. 13-04-2006 | Отправлено: 09:45 07-04-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SergWB
А почему, если не секрет, вы решили обратиться на Гуглоответы, а не в ветку, которую я вам посоветовал? Мне просто интересно.

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 18:57 07-04-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Прошелся глазами по этой ветке и составил что-то вроде FAQа из ответов на типовые, или показавшиеся мне таковыми, вопросы. Внес все это дело в шапку, попутно (так получилось) переоформив ее заново.
Замечания, пожелания и (особенно) дополнения приветствуются.
 

#: старая шапка

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 01:05 08-04-2012
king_stiven

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

Всего записей: 2093 | Зарегистр. 17-07-2006 | Отправлено: 09:40 08-04-2012
shrmn



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
в шапке очень много информации...Даже рябит. Шапка должна быть краткой. Очень краткой. Все остальное можно спрятать. Ведь шапка - это не Faq. Шапка - это краткое описание программы. Не более..Старая была более информативной и нагляднее...
Кроме всего, это не флейм и не обсуждение шапок. Поэтому и опрос здесь- флейм...

Всего записей: 1402 | Зарегистр. 16-12-2002 | Отправлено: 09:55 08-04-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
king_stiven
> Отличная шапка!
Спасибо. :-)
 
shrmn
> Шапка должна быть краткой. Очень краткой.
Почему?
 
> Все остальное можно спрятать.
Зачем же прятать информацию?
 
> Поэтому и опрос здесь — флейм
Какой еще опрос? О_о

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 12:18 08-04-2012
popkov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
king_stiven
Цитата:
Отличная шапка!
Полностью согласен.
 
shrmn
Цитата:
Шапка должна быть краткой. Очень краткой.
Это не является традицией форума: во всех развитых темах шапка отнюдь не маленькая, содержит максимум общепотребной информации, и это отнюдь не портит жизнь пользователям даже с медленным интернетом вроде меня.
Цитата:
Кроме всего, это не флейм и не обсуждение шапок. Поэтому и опрос здесь- флейм...
Вы подняли своим излишне резким постом ненужный шум в теме. Надеюсь, на этом он закончится.

Всего записей: 1780 | Зарегистр. 22-03-2003 | Отправлено: 20:33 08-04-2012 | Исправлено: popkov, 20:42 08-04-2012
SergWB

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

Цитата:
А почему, если не секрет, вы решили обратиться на Гуглоответы, а не в ветку, которую я вам посоветовал

 
Да все просто, пока я рутинно перелопачиваю руками обновленные файлы, и еще много чего помимо этого, не остается времени на изучение shell. Решение нужно было найти быстро. А вообще в моем большом виндузятном зоопарке уже пришлось завести один линуксовый сервак с Open Meetings'ом, и, думаю, это только начало. Тема интересна. Буду изучать!

Всего записей: 7 | Зарегистр. 13-04-2006 | Отправлено: 22:41 08-04-2012 | Исправлено: SergWB, 22:45 08-04-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SergWB
> не остается времени на изучение shell. Решение нужно было найти быстро.
И как я умудряюсь так непонятно изяснятся...
Я ни в коей мере не предлагал вам что-то изучить прежде, чем туда обращаться. Просто сказал, что за неимением на Руборде особой ветки по lftp (ну вот по wgetу есть, а по lftp нет пока) можно приходить с любыми вопросами по нему в ветку широкой тематики — «UNIX Shell». Это, кстати, в некотором роде общее правило веб-форумов. Еще весьма вероятно, что я бы вам там и ответил. ;-)
 
> Буду изучать!
В таком случае еще раз бы порекомендовал вам обзавестись на виндовых машинах Цингвином (Cygwin).

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 23:15 08-04-2012
Victor_VG

Редактировать | Цитировать | Сообщить модератору
ASE_DAG
 
И последний кстати обновился на днях до версии 1.7.12.
 
P.S.
 
А шапка вышла удачной. Не обращай внимание на ворчание ребят - они тебе завидуют что ты сделал то, на что они никак не могли решится.

Отправлено: 01:21 09-04-2012
BakLAN



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Шапка очень даже очень. Только FAQ, пожалуй, лучше под спойлер засунуть.

Всего записей: 2788 | Зарегистр. 15-12-2003 | Отправлено: 11:33 09-04-2012 | Исправлено: BakLAN, 11:34 09-04-2012
SergWB

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

Цитата:
В таком случае еще раз бы порекомендовал вам обзавестись на виндовых машинах Цингвином (Cygwin).

Так, уже обзавелся!

Всего записей: 7 | Зарегистр. 13-04-2006 | Отправлено: 18:59 09-04-2012
vitrzn



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Кто поможет с такой задачей ?!
Есть текстовый файл .\poba\list.txt , со списком файло в виде :
acn
law
adv

 
Надо как-то подставлять содержимое файла .\poba\list.txt в строку  
wget.exe -r -c -nd -np -A*acn.rar,*adv.rar,*ams.rar http://www.proba.ru/
 
т.е. не в ручную (после "-А"), а автоматом

Всего записей: 1160 | Зарегистр. 28-10-2007 | Отправлено: 11:42 01-06-2012 | Исправлено: vitrzn, 11:42 01-06-2012
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день, vitrzn
Если в Win, то что-то вроде:

Код:
 
setlocal enabledelayedexpansion
for /f %%i in (.\poba\list.txt) do set "filemask=!filemask!,*%%i.rar"
set "filemask=!filemask:~1!"
wget.exe -r -c -nd -np -A"!filemask!" http://www.proba.ru/
 

Описание : объединяет строки по шаблону, отрезает первую запятую.
К сожалению, сейчас проверить не могу (на Win98).

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 14:30 01-06-2012
Victor_VG

Редактировать | Цитировать | Сообщить модератору
vitrzn
 
wget -c -N -nd --trust-server-names [--no-check-certificate] --input-file=.\poba\list.txt, если работаем по SSL, то --no-check-certificate убрать.
 

Отправлено: 15:20 01-06-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Так, не понял! Кто втихаря снес пол-шапки? Да еще и ереси какой-то напихал про VisualWget, коий якобы «входит в дистрибутив wget». Не то, что копию исходной сюда не запостил, а даже не отписался. Откатил на 02:05 08-04-2012. Каким еще цветом выделять «однако не забывайте отписываться об исправлениях и сохранять исходный вариант» даже не знаю.
#: Шапка на 13:39 08-11-2003; посл. правка за shrmn, 13:10 01-06-2012

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 16:25 01-06-2012 | Исправлено: ASE_DAG, 16:28 01-06-2012
sikemo

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

Цитата:
Есть текстовый файл .\poba\list.txt , со списком файло в виде :  
acn  
law  
adv  

 
если подтвердится код, его стоит занести в шапку

Всего записей: 921 | Зарегистр. 27-11-2008 | Отправлено: 20:50 01-06-2012
vitrzn



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Alex_Piggy Victor_VG
Спасибо ! то что нужно.

Всего записей: 1160 | Зарегистр. 28-10-2007 | Отправлено: 18:39 06-06-2012
Victor_VG

Редактировать | Цитировать | Сообщить модератору
sikemo
 
Я этим кодом лет двадцать наверное пользуюсь. Это Вы тут господа GUI-ки ждёте графических милостей от дядюшек Билли со Стиви, а мы старики сидим по UNIX-ом люди простые - позвал терминал, скомандовал ls-fR * | sed -e ./filters > ./list&&wget -c -N -nd --trust-server-names --input-file=./list с консоли и топай кофе пить с сознанием выполненного долгу.

Отправлено: 21:07 06-06-2012
Открыть новую тему     Написать ответ в эту тему

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