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



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
addhaloka
> У меня вопрос по батнику ... lftp вроде вообще не при делах.
А Вэ-гет здесь тогда каким боком?
 
> http://s1.bild.me/bilder/260513/4434466_0.png
Тогда --time-style=%d.%m.%Y (это к lftp)
 
Картинку вы привели, чтобы я заценил вашу цветовую схему? :-) Мне не нравится, извините.
 
> Что значит «нормальный язык»?
Не deprecated язык коминтерпретатора Виндоўс.

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 18:37 08-06-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
addhaloka
 
Формат вывода переменных среды %DATE%/%TIME% целиком зависит от настроек локали, и при необходимости могут быть изменены в довольно широких пределах. И если кто-то задаст к примеру время в 12-и часовом формате, а дату в формате MM/DD/WW/KK/YY поскольку ему для чего-то надо видеть текущую неделю и квартал. И...? Ваше решение продолжит работать?

Отправлено: 19:25 08-06-2013
Drakostaarn



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день всем!  
 
Прошу помощи по работе с wget-ом. Конкретно, задача стоит следующим образом:
 
http://support.microsoft.com/kb/935934 Отсюда (точнее - отсюда http://go.microsoft.com/fwlink/?LinkID=87342&clcid=0x409) нужно раз в сутки скачивать файл с обновлениями для мелкомягкого антивиря. Вопрос - реально ли это сделать wget-том, если да, то как? Собственно, меня интересует именно скачивание, автоматизацию я сделаю. Проблема в том, что при скармливании программе ссылки вида http://go.microsoft.com/fwlink/?LinkID=87342&clcid=0x409 пытается коннектиться, потом таймаут и всё по-новой.  
 
Подозреваю, что из-за разницы в обработке ссылок в wget и браузере.

Всего записей: 15 | Зарегистр. 10-09-2010 | Отправлено: 13:51 14-06-2013
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день, Drakostaarn
К сожадению, не подтверждаю. Пожалуйста приложите как минимум командную строку, которой Вы пытаетесь скачать и версию. Желательно также debug-лог. ("-d -a wget.log").
В версии 1.11.4 by Bart Puype нижеследующая команда начинает скачивать 75 Mb mpam-fe.exe (как ни странно, что с кавычками, что без).  
wget "http://go.microsoft.com/fwlink/?LinkID=87342&clcid=0x409"

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 13:57 14-06-2013
Pasha_ZZZ



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Drakostaarn
Качается и по вышеприведенной ссылке, &clcid=0x409 можно убрать, это ни к чему.
 
Самые-самые прямые из постоянных ссылок вот эти:
 
x86:
http://www.microsoft.com/security/encyclopedia/adlpackages.aspx?arch=x86&format=1
 
x64:
http://www.microsoft.com/security/encyclopedia/adlpackages.aspx?arch=x64&format=1

Всего записей: 3758 | Зарегистр. 11-03-2002 | Отправлено: 14:22 14-06-2013
Drakostaarn



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо! Это я тупанул - у нас же прокся на работе, а wget по дефолту тянул напрямую... Всё работает, ещё раз спасибо.

Всего записей: 15 | Зарегистр. 10-09-2010 | Отправлено: 15:02 14-06-2013
ptitza_in_da_ruboard



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть идеи, чем заменить -N (происходит повторное скачивание не изменившегося файла)
тут

Код:
wget http://www.piriform.com/ccleaner/download/slim//downloadfile -N --content-disposition --referer=http://www.piriform.com/ccleaner/download/slim

wget 1.11.4 os windows xp
wget 1.13.4 os windows xp
Пишет, что
Last-modified header missing -- time-stamps turned off
Складывается впечатление, что возможности не перекачивать не изменившийся файл нет.
 
Ошибся в первоначальной версии сообщения, указав ошибочно referer от другой закачки, качает и без него:
wget http://www.piriform.com/ccleaner/download/portable//downloadfile -N --content-disposition --referer=http://www.piriform.com/ccleaner/download/slim

Всего записей: 362 | Зарегистр. 19-05-2008 | Отправлено: 17:40 21-06-2013 | Исправлено: ptitza_in_da_ruboard, 19:19 21-06-2013
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ptitza_in_da_ruboard
> wget http://www.piriform.com/ccleaner/download/portable//downloadfile -N --content-disposition --referer=http://www.piriform.com/ccleaner/download/slim
> Last-modified header missing -- time-stamps turned off
А что вас смущает? Он же действительно отсутствует. Есть Date:, но и он в данном случае лишен смысла — сервер всегда подставляет в него текущее время.
 
> возможности не перекачивать не изменившийся файл нет
Не изменившийся по размеру, но сменивший дату? Да, по всей видимости, верно. (Надо бы добавить это в шапку.)
 
А вы уверены, что файл меняется, не сменив имя? В противном случае просто --no-clobber же.

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 18:17 21-06-2013 | Исправлено: ASE_DAG, 18:23 21-06-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
ptitza_in_da_ruboard
 
Почему нет? Смотрим лог и добавим в команду ключик --no-use-server-timestamps. Должно помочь - этот сервер не передаёт отметку времени.

Отправлено: 18:25 21-06-2013
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Victor_VG
> ...добавим в команду ключик --no-use-server-timestamps. Должно помочь...
Вы проверяли? Я не подтверждаю — не помогает. Да и ману ваша гипотеза о назначении этого ключа не соответствует.
 

Цитата:
--no-use-server-timestamps
Don't set the local file's timestamp by the one on the server.  
 
By default, when a file is downloaded, it's timestamps are set to match those from the remote file. This allows the use of --timestamping on subsequent invocations of wget. However, it is sometimes useful to base the local file's timestamp on when it was actually downloaded; for that purpose, the --no-use-server-timestamps option has been provided.


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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 18:33 21-06-2013
ptitza_in_da_ruboard



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

Цитата:
А вы уверены, что файл меняется, не сменив имя? В противном случае просто --no-clobber же.

Действительно, это возможное решение, у новой версии (не подверсии) программы обычно другое имя.
Возможно, подверсии a.b.xxxx выходят с теми же именами, но пришёл к варианту (Благадарствую за --no-clobber  (-nc)  ASE_DAG)

Код:
wget http://www.piriform.com/ccleaner/download/slim//downloadfile --content-disposition -nc

 
Victor_VG
wget-1.13.4.exe http://www.piriform.com/ccleaner/download/slim//downloadfile --referer=http://www.piriform.com/ccleaner/download/slim -N --content-disposition --no-use-server-timestamps
Перекачивает один и тот же файл, увы
 
Надеялся, что есть ключ, проверяющий размер файла и на основании длины делающий вывод - перекачивать файл или нет у wget и я его проглядел. Похоже, нет.

Всего записей: 362 | Зарегистр. 19-05-2008 | Отправлено: 19:11 21-06-2013
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ptitza_in_da_ruboard
> Возможно, подверсии a.b.xxxx выходят с теми же именами
Забавно, но мне не известно утилиты, одновременно обладающей возможностью основывать факт изменения файла только на изменении его размера и умеющей сохранять его под именем, указанном в Content-Disposition (первое без второго умеет lftp). Так что если убедитесь в истинности процитированного — будете, наверное, писать скрипт (приходите в ветку «UNIX Shell», если с этим будут затруднения).

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 19:34 21-06-2013 | Исправлено: ASE_DAG, 22:44 21-06-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
ptitza_in_da_ruboard
 
Такая возможность (проверка по размеру/времени) есть только у cURL-а, а у него ключей - на добрую книжку наберётся. Wget в этом смысле проще. Ключ -nc в данном случае бесполезен. У себя я сначала perl-скриптом проверяю факт обновления, после rm -f <filelist>&&wget .... Иного решения придумать не удалось.... Но, правда у UNIX и cURL штука штатная.

Отправлено: 19:36 21-06-2013
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Victor_VG
> Такая возможность есть ... у cURL-а
О! А я не нашел. Какой ключ?

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 19:47 21-06-2013 | Исправлено: ASE_DAG, 19:48 21-06-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
ASE_DAG
 
Ой, не помню точно, помню что он это умеет. Точнее надо в его доки лезть и смотреть. Мне это пришлось последний раз лет пять назад делать когда скрипты переписывал.

Отправлено: 20:08 21-06-2013
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Victor_VG
> Ой, не помню точно ... надо в его доки лезть и смотреть
Ну посмотрите при случае, если не слишком сложно. А то иначе к чему было это вообще упоминать.
 
Q: Известно, что можно приказать Вэ-гету обновить ранее загруженный файл, если на сервере новее или иного размера (ключ --timestamping, он же -N). Можно приказать учитывать только дату, но не размер (--timestamping --ignore-length). А можно ли учитывать только размер, но не дату?
A: Нет.

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 20:17 21-06-2013 | Исправлено: ASE_DAG, 21:28 21-06-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
ASE_DAG
 
Ладно, гляну.

Отправлено: 20:21 21-06-2013
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добавил в шапку вопрос-ответ, что в посте выше, + стилевые правки.
 

#: шапка версии Victor_VG, 15:37 26-12-2012


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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 21:28 21-06-2013
ptitza_in_da_ruboard



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

Цитата:
 Забавно, но мне не известно утилиты

Если вы не имели в виду консолеподобные консольные, то повторно не скачивает Download Master. он под Windows имеет GUI. (по кнопке проверить обновление)

Всего записей: 362 | Зарегистр. 19-05-2008 | Отправлено: 22:25 21-06-2013 | Исправлено: ptitza_in_da_ruboard, 23:18 21-06-2013
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ptitza_in_da_ruboard
Нет, я имел в виду не только неинтерактивные / свободные / кроссплатформенные, но и вообще. «Мне неизвестны» — значит именно, что мне неизвестны. ;-) С Download Masterом не знаком. Буду иметь в виду, спасибо.

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 22:46 21-06-2013
Открыть новую тему     Написать ответ в эту тему

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