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



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, пожалуйста, как можно сделать так, чтобы wget начал качать в определённое время поток iptv и в нужное время завершил закачку?
Пример практический - нужно записать программу начиная с 18:00 по 19:00 используя ссылку http://xxxxxxxxxx.xx/media/hdanimalplanet, но задание дать, скажем, в 12:00.
Скриптом я так понимаю не получиться, не будет же он всё это время висеть?

Всего записей: 1488 | Зарегистр. 17-05-2010 | Отправлено: 16:41 07-01-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
anynamer
 
можно запустить и прекратить программу внешним планировщиком. К примеру nnCron. А почему бы и нет?

Отправлено: 17:20 07-01-2013
anynamer



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

Цитата:
А почему бы и нет?

В смысле можно создать такой скрипт который будет висеть так долго?

Всего записей: 1488 | Зарегистр. 17-05-2010 | Отправлено: 17:52 07-01-2013
Pasha_ZZZ



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
anynamer
стандартный подвиндовый планировщик, есть время запуска задания, и на вкладке Параметры - Выполнять не дольше, чем часов минут...

Всего записей: 3758 | Зарегистр. 11-03-2002 | Отправлено: 17:57 07-01-2013
anynamer



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pasha_ZZZ
Спасибо, хороший вариант, но я хочу создать кнопку для Total Commander желательно со скриптом который можно быстро редактировать или создать несколько вариантов.

Всего записей: 1488 | Зарегистр. 17-05-2010 | Отправлено: 18:05 07-01-2013
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день
 anynamer
Или через стандартный планировщик заданий - schtasks
Пример для Висты
schtasks /create /tn "Animal Planet Download" /tr "cmd /k \"d:\progs\utils\wget.exe http://xxxxxxxxxx.xx/media/hdanimalplanet -O d:\avi\animalplanet%%date%%.ts \"" /sc ONCE /st 18:00 /et 19:00
Только, пожалуйста, сначала проверьте.
 
Victor_VG
Уважаемый, если у Вас есть возможность, проверьте пожалуйста в FreeBSD (или что не-виндовое у Вас есть под руками) две команды на wget 1.14?
1. В win32 дает ошибку "Bad file descriptor"
wget -Q 10 -c -r wget.addictivecode.org && wget -Q 10 -c -r wget.addictivecode.org
2. В win32 дает ошибку "Could not open temporary WARC manifest file."
wget --warc-file=wget.addictivecode.org wget.addictivecode.org  
Заранее благодарю.
 
Добавлено: путь к wget.

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 18:25 07-01-2013 | Исправлено: Alex_Piggy, 23:13 07-01-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
anynamer
 
Запросто. Задачи пишутся в crontab и планировщик их оттуда считывает и выполняет. А запустить/завершить процесс от имени и по поручению с кучей самых вычурных настроек задачи и командной строкой длинной в километр крон с рождения умел.
 
Добавлено:
Alex_Piggy
 
Проверю при случае.

Отправлено: 18:34 07-01-2013
anynamer



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

Цитата:
schtasks /create /tn "Animal Planet Download" /tr "cmd /k \"wget http://xxxxxxxxxx.xx/media/hdanimalplanet -O d:\avi\animalplanet%%date%%.ts \"" /sc ONCE /st 18:00 /et 19:00

Большое спасибо, а как указать путь к wget?
 
 
Victor_VG
Спасибо, поизучаю

Всего записей: 1488 | Зарегистр. 17-05-2010 | Отправлено: 19:24 07-01-2013
anynamer



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

Цитата:
schtasks /create /tn "Animal Planet Download" /tr "cmd /k \"d:\progs\utils\wget.exe http://xxxxxxxxxx.xx/media/hdanimalplanet -O d:\avi\animalplanet%%date%%.ts \"" /sc ONCE /st 18:00 /et 19:00

Поменял %%date%% на %date%
Как убить процесс wget в 19:00?
/et 19:00 - завершает задание, но не убивает процесс wget, так?

Всего записей: 1488 | Зарегистр. 17-05-2010 | Отправлено: 17:40 09-01-2013 | Исправлено: anynamer, 18:36 09-01-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
anynamer
 
Через кронтаб элементарно - команда киллпроцесс и крон его сам завершит. При этом крон стоит запускать демоном (сервисом) - тогда он получит привилегии ядра и сможет выполнить те операции на которые у пользователя не хватит полномочий. Но, у сей медали и оборотная сторона есть - можно и дров за троих наломать...

Отправлено: 18:43 09-01-2013
anynamer



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

Цитата:
Через кронтаб
это nnCron?
 

Всего записей: 1488 | Зарегистр. 17-05-2010 | Отправлено: 19:52 09-01-2013
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый вечер, anynamer
Тысяча извинений... Не проверил, положился на логику.  
/du + /k - "длительность  выполнения задачи в формате "HH:MM"" убивает процесс точно. (когда-то пользовался...). Вот и посчитал, что /et тоже.  
Получается Вам нужно    
schtasks /create /tn "Animal Planet Download" /tr "cmd /k \"d:\progs\utils\wget.exe http://xxxxxxxxxx.xx/media/hdanimalplanet -O d:\avi\animalplanet%%date%%.ts \"" /sc ONCE /st 18:00 /du 01:00 /k /f
Да, и "%date%" - сохранит в файл с датой создания задания, а "%%date%%" - с датой выполнения задания.

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 20:05 09-01-2013
anynamer



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
И Вам доброго вечера
Большое спасибо за пояснения и правки.
Так закрылся wget

Всего записей: 1488 | Зарегистр. 17-05-2010 | Отправлено: 20:57 09-01-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
anynamer
 
Можно и им воспользоваться. Кронтаб - это своеобразная текстовая БД где крон хранит свои задачи, а по большому счёту набор его конфигов записанный в форме текста.

Отправлено: 21:10 09-01-2013
anynamer



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

Всего записей: 1488 | Зарегистр. 17-05-2010 | Отправлено: 21:51 09-01-2013
dimmer123

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не могу сохранить страницу Wgetом http://www.hahasport.com/c-4.html ОШИБКА 404: Not Found. Что может быть?

Всего записей: 98 | Зарегистр. 17-09-2007 | Отправлено: 13:03 11-01-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
anynamer
 
Здесь есть для семёрки - http://www.nncron.ru/forums/viewtopic.php?f=5&t=10294&start=120#p28465 .

Отправлено: 13:31 11-01-2013
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день, dimmer123
Сайт отдает только сжатые страницы.  Отзеркалить, похоже не получится.
Закачать конкретную страницу можно или  
wget --header="Accept-Encoding: gzip" "http://www.hahasport.com/c-4.html" -O -| guzip >c-4.html
или  
curl --compressed -O "http://www.hahasport.com/c-4.html"

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 15:50 11-01-2013 | Исправлено: Alex_Piggy, 15:50 11-01-2013
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dimmer123
> Не могу сохранить страницу Wgetом http://www.hahasport.com/c-4.html ОШИБКА 404: Not Found.
Этот хост возвращает только сжатый контент.
$ wget -O - --header 'Accept-Encoding: gzip, deflate'  http://www.hahasport.com/c-4.html | zcat > c-4.html
 
Добавлено:
Ну вот, опоздал.

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 15:52 11-01-2013
dimmer123

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
ASE_DAG
Большое спасибо!

Всего записей: 98 | Зарегистр. 17-09-2007 | Отправлено: 22:31 11-01-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:44:59 (c) xForumSaver