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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BakLAN
А там текст кодирован escape.
Поэтому wget не видит ссылок.
 
Надо бы декодировать index.html  здесь и подсунуть wget-у,запустив его загружать сайт с опцией -nc
 

Всего записей: 3469 | Зарегистр. 05-01-2006 | Отправлено: 18:03 04-03-2008 | Исправлено: mithridat1, 18:11 04-03-2008
Serhi_84

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вновь появилась проблема с обновлением файлов базы антивируса. (общая картина приведена на 2 поста выше)
 
Предположим на сайте есть файлы с расширением *.gem и именами от 1 до 10. При наступлении нового дня появляется файл 11.gem, а файл 1.gem удаляется (ну или несколько самый старых файлов, к примеру 1.gem и 2.gem). На  текущий момент у меня осуществляется скачивание только более нового файла (то есть наступает новый день - скачивается только 11.gem, а остальные не качаются, так как размер их не меняется и включен timestramping). Как-нибудь можно сделать, чтобы при скачивании нового файла удалялся старый файл, то есть зеркалирование страницы сервера. Причем файлы, которые не изменились (2-10.gem) скачиваться не должны для экономии траффика. Если использую -m, то перезаливаются все файлы.....использование же -m и -nc одновременно нельзя....

Всего записей: 30 | Зарегистр. 29-02-2008 | Отправлено: 13:02 06-03-2008
igor_andreev

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

Всего записей: 1595 | Зарегистр. 08-12-2004 | Отправлено: 13:55 06-03-2008
Serhi_84

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
http://216.49.88.143/Products/CommonUpdater/Current/VSCANDAT1000/DAT/0000/
 
у меня локально хранится этот каталог. Мне нужно качать файлы *.gem  
 
wget -np -nc -r -Agem -l3 -nH --cut-dirs=6 -P "путь для хранения" http://216.49.88.143/Products/CommonUpdater/Current/VSCANDAT1000/
 
такой командой у меня происходит закачка нового появляющегося gem-файла. (оставшиеся файлы нет смысла закачивать снова так как они не меняются). Но на сервере вместе с появлением нового файла удаляется самый старый (то есть постоянно хранится 10-15 gem-файлов). Мне необходимо так же сделать, иначе размер моей локальной папки будет расти.....
конечно можно раз в месяц зайти в папку, удалить несколько самых старых, оставить 10-15 самых свежих и все.....но может быть wget может это реализовать?
 
то есть необходимо делать зеркалирование текущей страницы, и все изменения применять к моей локальной копии, а данные, которые остались постоянными -  не трогать для экономии траффика
 

Всего записей: 30 | Зарегистр. 29-02-2008 | Отправлено: 14:16 06-03-2008
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Serhi_84
Положи в локальную папку с *.gem вот такой батник и запусти

Код:

@ECHO OFF
 
WGET -m ftp://ftp.nai.com/CommonUpdater/Current/VSCANDAT1000/DAT/0000/gdeltaavv.ini  
FOR /F %%A IN ('DIR /B *AVV.GEM') DO (  
  FIND /I "%%A" gdeltaavv.ini>NUL 2>&1 || ECHO %%A REMOVED FROM FTP  
)
 
PAUSE

работает? В смысле - если у тебя в папке есть файл *avv.gem, который уже удален с сервера, батник должен написать, что этот gem REMOVED FROM FTP  
 
Добавлено:

Цитата:
конечно можно раз в месяц зайти в папку, удалить несколько самых старых, оставить 10-15 самых свежих и все.....но может быть wget может это реализовать?  

wget сам удалять в локальной папке ничего не будет. Сохранность файлов пользователя - наипервейшая задача любой программы

Всего записей: 1595 | Зарегистр. 08-12-2004 | Отправлено: 16:15 06-03-2008 | Исправлено: igor_andreev, 16:20 06-03-2008
BakLAN



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

Цитата:
А там текст кодирован escape.  
Поэтому wget не видит ссылок.  
 
Надо бы декодировать index.html  здесь и подсунуть wget-у,запустив его загружать сайт с опцией -nc

Декодировал, а чё дальше?
 
wget.exe -m -nc http://kkwarezupload.com/ccna/ не работает...

Всего записей: 2788 | Зарегистр. 15-12-2003 | Отправлено: 23:32 06-03-2008
Serhi_84

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
igor_andreev, спасибо огромное, все прекрасно сработало! (вместо последней эхи использовал del и получилось локальное зеркало страницы сайта с gem-файлами)

Всего записей: 30 | Зарегистр. 29-02-2008 | Отправлено: 07:56 07-03-2008
igor_andreev

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

Цитата:
вместо последней эхи использовал del  

Ну да, это и имелось ввиду. Только немного переделай. Если файла gdeltaavv.ini в папке не окажется, мало ли там, сбой на сервере mcafee, сбой у твоего провайдера и т.п. - то все локальные файлы *.gem будут удалены напрочь, FIND не найдет их названий в gdeltaavv.ini, а DEL команда суровая и фамильярничать не позволяет.

Код:

IF EXIST gdeltaavv.ini (  
  FOR /F %%A IN ('DIR /B *AVV.GEM') DO (  
    FIND /I "%%A" gdeltaavv.ini>NUL 2>&1 || DEL %%A  
  )  
)


Всего записей: 1595 | Зарегистр. 08-12-2004 | Отправлено: 13:00 07-03-2008
mithridat1



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

Цитата:
wget.exe -m -nc http://kkwarezupload.com/ccna/ не работает...

А если просто -r -np вместо -m поставить для рекурсии ? Или важно именно отзеркалить сайт ?
Вообще то,там в индексе ссылки прямые,не релятивные.

Всего записей: 3469 | Зарегистр. 05-01-2006 | Отправлено: 16:06 07-03-2008 | Исправлено: mithridat1, 16:07 07-03-2008
Maza Faka



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Приветствую! Подскажите как правильно скачать файл по такой ссылке: "http://files.chirkom.uz/index.php?action=downloadfile&filename=VideoMach272.exe&directory=_Users/GooDeR&"?
Скармливаю Download Master-у он сохраняет как VideoMach272.exe, то есть правильно, а wget создаёт несколько вложенных подпапок и сохраняет файл как GooDeR& пытался использовать параметр --referer но безуспешно

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 09:39 12-03-2008
Auren

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите правильно составить скрипт. Есть ссылка с постоянно обновляемым изображением. Так работает веб-камера по принципу still image. Так вот, требования такие:
 
1. Скачивать файл по ссылке http://server/webcam.jpg в папку C:\webcam
2. Переименовывать в формате webcam-ддччммсс (день, час, минута, секунда)
3. Повторить п.1 (без задержек, но дожидаться полной загрузки изображения)
4. Выполнять до тех пор, пока я не остановлю его вручную.

Всего записей: 614 | Зарегистр. 16-10-2006 | Отправлено: 20:39 15-03-2008
iglezz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Auren
getshot.bat  
Код:
:loop
wget -nv -O webcam-%date:~0,2%_%time:~0,2%_%time:~3,2%_%time:~6,2%.jpg http://server/webcam.jpg
goto loop

Всего записей: 573 | Зарегистр. 18-02-2003 | Отправлено: 22:40 15-03-2008 | Исправлено: iglezz, 22:42 15-03-2008
Auren

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iglezz
Спасибо! Работает превосходно. Как часы.
 
Но все-таки, на будущее, как мне потом изменить скрипт, чтобы он снимал картинку каждые n минут?
 
Что-то вроде:

Цитата:
:loop
wget -nv -w 60 -O webcam-%date:~0,2%_%time:~0,2%_%time:~3,2%_%time:~6,2%.jpg http://server/webcam.jpg
goto loop

?

Всего записей: 614 | Зарегистр. 16-10-2006 | Отправлено: 23:11 15-03-2008 | Исправлено: Auren, 23:17 15-03-2008
juvaforza

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А как, например, скачать все файлы отсюда за раз, если такое возможно?

Всего записей: 2881 | Зарегистр. 25-11-2005 | Отправлено: 23:36 15-03-2008 | Исправлено: juvaforza, 23:46 15-03-2008
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Auren
sleep.exe из 2003 Resource Kit sleep.zip (~2Кб)
и перед goto вставь команду sleep 300, будет раз в пять минут скачивать
juvaforza

Код:

wget -r отсюда

Всего записей: 1595 | Зарегистр. 08-12-2004 | Отправлено: 00:31 16-03-2008
Aeismann



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iglezz, респект, напомнил мне про извлечение подстроки, я как раз парился над вопросом, как бы получить дату в нужном формате!
 
Только этот скрипт будет работать исключительно для случая, когда в системных региональных настройках стоит формат даты дд.ММ.ГГГГ. Никто не знает, как можно определить из батника этот формат или поменять на время?
 
P.S. Вот мой батник для скачивания апдейтов к доктору Вебу, может, пригодится кому
 

Код:
@echo off
 
set DrWeb=C:\Soft\System\DrWeb\
 
rem set Log=--output-file wget.log
set WGETRC=%CD%\.wgetrc
 
wget -O.\Archive\list.html http://www.drweb.ru/download/50/
wget -Azip -P .\Archive -i.\Archive\list.html -F
 
7za e Archive\*.zip -oUnpack -aos -x!*.txt
7za e Archive\*today*.zip -oUnpack -aoa -x!*.txt
 
xcopy Unpack\*.* %DrWeb% /Y /C
 
pause

 

Всего записей: 174 | Зарегистр. 24-10-2006 | Отправлено: 13:02 18-03-2008
iglezz

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

Цитата:
Только этот скрипт будет работать исключительно для случая, когда в системных региональных настройках стоит формат даты дд.ММ.ГГГГ. Никто не знает, как можно определить из батника этот формат или поменять на время?


Код:
reg query "HKCU\Control Panel\International" /v "sShortDate"

на выходе дает:

Код:
! REG.EXE VERSION 3.0
 
HKEY_CURRENT_USER\Control Panel\International
    sShortDate  REG_SZ  dd.MM.yyyy

 
а в некоторых случаях, думаю, удобнее выдернуть дату из заголовка, что сервер отдает

Код:
wget -S --spider http://database.clamav.net/daily.cvd
 
--13:40:55--  http://database.clamav.net/daily.cvd
           => `daily.cvd'
Resolving database.clamav.net... 81.223.20.171, 85.214.44.186, 91.194.14.100, ..
.
Connecting to database.clamav.net|81.223.20.171|:80... connected.
HTTP request sent, awaiting response...
  HTTP/1.0 200 OK
  Content-Type: application/octet-stream
  ETag: "-498812407"
  Accept-Ranges: bytes
  Last-Modified: Tue, 18 Mar 2008 10:43:00 GMT
  Content-Length: 1751026
  Connection: keep-alive
  Date: Tue, 18 Mar 2008 11:34:49 GMT
  Server: lighttpd/1.5.0
Length: 1а751а026 (1.7M) [application/octet-stream]
200 OK

Всего записей: 573 | Зарегистр. 18-02-2003 | Отправлено: 14:37 18-03-2008
Aeismann



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iglezz, круто!! Не знал!
 
Да вообще-то это у меня для создания бэкапов, что к вгету не относится )). Раньше юзал рар, он сам дату подставляет, а сейчас перешёл на 7зип, пришлось самому генерить...

Всего записей: 174 | Зарегистр. 24-10-2006 | Отправлено: 17:58 18-03-2008
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Aeismann
http://forum.ru-board.com/topic.cgi?forum=5&topic=25393&start=347&limit=1


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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
привет я выслал игорю PM но решил ещё тут попросить помощи, в общем мне нужно коннектится каждые 15мин к фтп серверу защищенным ssl смотрел что там находится последнее и качал локально при этом создав папку с текущим днём , и создавал папку с названием папки выше этого файла(я имею ввиду если была такая ftp://xxx.xxx.xxx.xxx/mp3/0313/House/) то создавалась бы папка House .  
Есть более подробное ТЗ. я понимаю можно это впринципе wget +cron но мне бы под windows. я немогу подобрать все комманды к wget вообще 3-ий раз перечитываю хелп и немогу уж точно подобрать то что надо.  
помогите ктонить

Всего записей: 5 | Зарегистр. 23-03-2008 | Отправлено: 20:21 23-03-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:40:27 (c) xForumSaver