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

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Valery_Sh, спасибо, вот только сам затрудняюсь прощелкать: допустимо ли приноровить Ваш код к задаче скачивания файла по заданному пути с новым именем?
 
Добавлено:
ASE_DAG
 
Читал-то, вестимо, глазами (хоть и по диаганали) — только один черт, не делает как надо)) Насколько выяснил, путь для команды --output-document уже должен существовать, а ожидалось, чтобы команда сама сей путь творила. И плюс — новое имя для файла. По-моему, так.

Всего записей: 392 | Зарегистр. 04-04-2010 | Отправлено: 23:20 30-04-2016
VictorVG4



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D
 
Ну а коли что-то типа так:
 
md %1&&wget ... --output-document=%1 ... ?


----------
Жив курилка! (Р. Ролан, "Кола Брюньон")

Всего записей: 474 | Зарегистр. 26-03-2016 | Отправлено: 23:47 30-04-2016
D1D1D1D

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VictorVG4
 
Вроде результат соответствует действию --directory-prefix.

Всего записей: 392 | Зарегистр. 04-04-2010 | Отправлено: 00:03 01-05-2016
Valery_Sh



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вообще-то путаные задачи проще разбивать на мелкие, понятные и однозначные.
Кто мешает переименовать/переместить файл уже после загрузки?
 
Аналогично с директорией для --directory-prefix:
не существует - создаём
существует и не пуст - выход с ошибкой
старт загрузок

Всего записей: 892 | Зарегистр. 30-06-2008 | Отправлено: 00:11 01-05-2016
D1D1D1D

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
С одним или несколькими файлами — можно было бы, но предполагается скачивание множества файлов.

Всего записей: 392 | Зарегистр. 04-04-2010 | Отправлено: 01:24 01-05-2016
VictorVG4



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D
 
Ну, тот же фокус что и выше только if exists %1 md %1&wget ... , %1 можно и через цикл for менять. Вариантов море, выбираем какой больше нравится.

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")

Всего записей: 474 | Зарегистр. 26-03-2016 | Отправлено: 03:27 01-05-2016
cbah



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
добрый вечер, уважаемые. кто знает, как скачать вгетом со страницы сайта много однотипных файлов, имена которых различаются последними цифрами? напишите, пожалуйста, команду, а ...

Всего записей: 65 | Зарегистр. 13-11-2007 | Отправлено: 21:47 08-05-2016 | Исправлено: cbah, 21:48 08-05-2016
VictorVG4



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Если файлы лежат в одном каталоге то можно просто подставить URL каталога где лежат файлы, а после удалить не нужные. Для  новичка это самое простое решение.

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")

Всего записей: 474 | Зарегистр. 26-03-2016 | Отправлено: 22:49 08-05-2016 | Исправлено: VictorVG4, 22:50 08-05-2016
cbah



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добавлено:
VictorVG4
спасибо за скорый ответ. судя по адресу - в одном. но скачать весь каталог не дает. если в оболочке вгета WCOM.EXE менять последнюю цифру имени файла, то файлы закачаваются, но по одиночке. хорошо бы сделать так, что запустил вгет и скачал все оптом.

Всего записей: 65 | Зарегистр. 13-11-2007 | Отправлено: 00:08 09-05-2016 | Исправлено: cbah, 00:18 09-05-2016
mleo

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
> со страницы сайта много однотипных файлов
 
Посмотрите здесь: http://forum.ru-board.com/topic.cgi?forum=8&topic=8058
 
--------------
  -A,  --accept=СПИСОК             список разрешённых расширений, разделённых запятыми.
 
--------------
 
$ wget --help  # много чего интересного.

Всего записей: 2400 | Зарегистр. 19-05-2004 | Отправлено: 00:38 09-05-2016 | Исправлено: mleo, 00:53 09-05-2016
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
cbah> со страницы сайта
 
Она из Интернета недоступна, да?
 
> имена которых различаются последними цифрами?
 
Последовательно?  1, 2, 3, 4...?  Тогда, надеюсь, что нижнюю границу, вы знаете и сервер корректно возвращает ошибку при отсутствии ресурса, а значит можно:
 
$ i=1; while wget "https://example.org/file-${i}"; do ((i++)); done

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 00:53 09-05-2016
cbah



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ничего не знаю, ничего не понимаю...
адрес такой: http://212.193.149.156/_cdn_auth/secure/v/vh/vod_hls/definst/smil:vh/smil/001/187/092_d20150618161633.smil/media_w2024552585_b1200000_pd4950000_0.ts скопирован из файерфокса+давнлоадхелпер
меняется последняя цифра, в данном случае 0. сколько файлов, не знаю. вгет качает каждый файл отдельно при изменении последней цифры. собираются скаченные файлы в один командой копирования. все работает, по крайней мере те, которые я вгетом скачал. как запустить на скачку вгетом все файлы?

Всего записей: 65 | Зарегистр. 13-11-2007 | Отправлено: 23:18 09-05-2016 | Исправлено: cbah, 23:22 09-05-2016
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
cbah> ничего не знаю, ничего не понимаю
 
Очень плохо.
 
> http://212.193.149.156/_cdn_auth/secure/v/vh/vod_hls/definst/smil:vh/smil/001/187/092_d20150618161633.smil/media_w2024552585_b1200000_pd4950000_0.ts
 
По-моему, вы самым злостным образом велосипедируете.  Нечто вы полагаете, что вы первый, кому понадобилось написать замену для какого-то-там несвободного проигрывателя на Флэше (которых не так много), который на на какой-то там неуказанной вами странице проигрывает видео нарезанное на кусочки?

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 09:45 10-05-2016 | Исправлено: ASE_DAG, 09:47 10-05-2016
mithridat1



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
cbah
Я давал уже примеры скачивания подобных видеопотоков здесь,через wget и curl.
 
Но вообще это извращенный способ.Для скачивания потокового видео из командной строки есть инструменты FFmpeg и livestreamer,вся информация с примерами по ним в том же топике.

Всего записей: 3469 | Зарегистр. 05-01-2006 | Отправлено: 10:54 10-05-2016
cbah



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

Цитата:
ничего не знаю, ничего не понимаю  
 
Очень плохо.

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

Всего записей: 65 | Зарегистр. 13-11-2007 | Отправлено: 12:38 10-05-2016
mithridat1



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
cbah
Wget и curl просто для других задач.В данном случае повезло,что плейлист без шифрования файлов,иначе скрипт бы усложнился кардинально(а ведь бывает и так,что ключ шифрования изменяется через каждые n сегментов).Поэтому,для каждой задачи лучше использовать специализированные средства,если такие существуют.В вашем случае надо было искать ссылку на плейлист,а не способ склеивания ts-сегментов.Вариант ниже,очевидно,удобнее и для этого не надо искать номер последнего сегмента в потоке(хотя,конечно,можно поставить просто большое число)
 
ffmpeg -i http://212.193.149.156/_cdn_auth/secure/v/vh/vod_hls/definst/smil:vh/smil/001/187/092_d20150618161633.smil/chunklist_w344360449_b1200000_pd4950000.m3u8 -c copy video.ts

Всего записей: 3469 | Зарегистр. 05-01-2006 | Отправлено: 13:06 10-05-2016 | Исправлено: mithridat1, 13:25 10-05-2016
cbah



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mithridat1
спасибо, с ффмпег понял - лучше. только как же найти этот плейлист-то, а? например, еще и здесь: http://37.220.165.6/_cdn_auth/secure/v/vh/vod_hls/definst/smil:vh/smil/200/150_d20131229214002.smil/media_w588147494_b1200000_pd6569000_0.ts

Всего записей: 65 | Зарегистр. 13-11-2007 | Отправлено: 17:56 10-05-2016
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
cbah> http://37.220.165.6/_cdn_auth/secure/v/vh/vod_hls/definst/smil:vh/smil/200/150_d20131229214002.smil/media_w588147494_b1200000_pd6569000_0.ts
 
Очевидно будет http://37.220.165.6/_cdn_auth/secure/v/vh/vod_hls/definst/smil:vh/smil/200/150_d20131229214002.smil/chunklist_w588147494_b1200000_pd6569000.m3u8
 
Однако забавно вы как-то заходите на него — с другого конца: ссылку вида, что вы привели, вы ниоткуда, кроме как из этого самого списка, который ищете, взять не могли.

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 19:37 10-05-2016 | Исправлено: ASE_DAG, 19:41 10-05-2016
cbah



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

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

я ж написал выше:

Цитата:
адрес такой:  
http://212.193.149.156/_cdn_auth/secure/v/vh/vod_hls/definst/smil:vh/smil/001/187/092_d20150618161633.smil/media_w2024552585_b1200000_pd4950000_0.ts
скопирован из файерфокса+давнлоадхелпер

а в саму папку с файлами и плейлистом не пускают.
 
в ващей записи:

Цитата:
http://37.220.165.6/_cdn_auth/secure/v/vh/vod_hls/definst/smil:vh/smil/200/150_d20131229214002.smil/media_w588147494_b1200000_pd6569000_0.ts


Цитата:
http://37.220.165.6/_cdn_auth/secure/v/vh/vod_hls/definst/smil:vh/smil/200/150_d20131229214002.smil/chunklist_w588147494_b1200000_pd6569000.m3u8

вроде как все понятно.
 
а в первой:

Цитата:
http://212.193.149.156/_cdn_auth/secure/v/vh/vod_hls/definst/smil:vh/smil/001/187/092_d20150618161633.smil/media_w2024552585_b1200000_pd4950000_0.ts


Цитата:
http://212.193.149.156/_cdn_auth/secure/v/vh/vod_hls/definst/smil:vh/smil/001/187/092_d20150618161633.smil/chunklist_w344360449_b1200000_pd4950000.m3u8

в имени файла тс и плейлиста м3у8 первый партия циферок-то разная. и если поменять в первом адресе _0.ts на .m3u8, то скачивается пустой плейлист.

Всего записей: 65 | Зарегистр. 13-11-2007 | Отправлено: 10:03 11-05-2016 | Исправлено: cbah, 10:10 11-05-2016
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG>> ссылку вида, что вы привели, вы ниоткуда, кроме как из этого самого списка, который ищете, взять не могли.
cbah> я ж написал выше[, что] скопирован из файерфокса+давнлоадхелпер
 
Что значит «я же написал»?  Я вас не спрашивал, как вы извлекли эту ссылку.  Я говорю, что очевидныим образом, чтобы получить ссылку на видеофрагмент, нужно сперва иметь в распоряжении m3u8-список.  
 
Если вы желаете продолжать делать секрет из того, где находится пользовательский интерфейс для просмотра этой попсы — ну попробуйте что ли натравить на поиск списка (по его имени) этот же ваш «давнло...».

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

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

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