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

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

Цитата:
Дополняйте смело же! Что тут обсуждать.

Не хочу лишний раз редактировать. Пусть лучше это будет один "коммит". Сформировать/увидеть/согласовать окончательную структуру, затем изменить шапку.

Цитата:
Во-первых, его и так не всегда проглядывают прежде задавать вопрос, а теперь вовсе не будут — чем меньше за что есть зацепиться глазу, тем, очевидно, менее вероятно, что зацепится.

К сожалению, для меня естественна/привычна обратная ситуация - чем больше текста (который уже несколько раз прокручивал как ненужный) приходится просматривать при быстром поиске информации, тем больше шанс, что искомое будет пропущено.

Цитата:
Во-вторых в свернутом виде его крайне неудобно читать — т. е. не искать ответ на свой вопрос, а именно читать от начала до конца.

Долго приноравливался (надеюсь, это никому не причинило неудобств) - нашел (баг?) - ссылку на несуществующий more.  "Нажмите здесь, чтобы прочитать полностью" - откроет полностью развернутую шапку. За сутки ничего лучше не придумалось. Изменил прошлый пост.

Цитата:
А в-третьих, собственно зачем его сворачивать? Разве пусть даже сколько угодно длинная кому-нибудь мешает?

Немного мешает мне. Когда ищу начало дискуссии (исходные данные), которое то ли на прошлой то ли на позапрошлой странице. Полноформатный поиск использовать вроде нет надобности, а прокручивать каждый раз по четыре страницы (или допечатывать в строке адреса "#2") уже некомфортно (переключение мышь/клава). До user-js, который это будет делать сам - еще не дорос.
 
Pasha_ZZZ
Вроде добавил...

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

Редактировать | Цитировать | Сообщить модератору
Alex_Piggy
 
Всё правильно. Человек просматривает несколько строк (больше пока никто не научился) и если не нашёл нужное мгновенно забывает этот материал. Такова особенность нашей памяти - мы как бы держим перед собой пять-шесть строк и их читаем. Потому и придумали аннотации что наш мозг иначе не воспринимает текст.
 
А что касается возражения ASE_DAG, то он прав в том, что документацию часто не читают, но ошибается в том, что это связано с размером. Основная причина это непонятность изложения "Ух! Как сложно!" и стереотип "Да там кроме рекламы и нет ничего!". Потому и не читают что подсознательно не хотят терять время. Тут нужен хороший технический писатель - человек который поймёт инженера на его языке, а после изложит то что он сказал простым языком понятным не подготовленному новичку, да только это очень редкий талант и не каждому он даётся... Значит постепенно самим текст править по мере накопления вопросов и ответов. Иного варианта я не вижу.

Отправлено: 20:34 13-07-2013
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
 
Добрых суток.
 
> Не хочу лишний раз редактировать.
Не вижу к этому никаких посылок, ну да дело ваше.
 
> нашел (баг?) - ссылку на несуществующий more.
Опа! Какая штука. Возьму на вооружение при чтении шапок, спасибо.
 
> чем больше текста приходится просматривать при быстром поиске информации, тем больше шанс, что искомое будет пропущено.
Не согласен; но даже допустив это в общем случае, не стоит это применять к конкретно этому тексту, поскольку я его писал, исходя из соображения, что искомое может содержаться не только в «вопросе», но и в ответе.
 
> "#2"  
> user-js
Хм. Ну набыдлокодил, держите.
 

Код:
// ==UserScript==
// @name        Ru-Board. Go to post #2.
// @namespace   ru-board
// @author      ASE DAG
// @license     CC0
// @license     https://creativecommons.org/publicdomain/zero/1.0/
// @include     http://forum.ru-board.com/topic.cgi*
// @version     0.1
// ==/UserScript==
 
function addHash() {
    var a = document.links;
    var re = /topic.cgi\?forum=.+topic=.+start=\d+$/;
    for (var i = 0; i < a.length; i++) {
        if ( a[i].href.match(re) ) {
            a[i].hash = '#2';
        }
    }
}
 
window.addEventListener('load', addHash(), false);


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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 21:47 13-07-2013 | Исправлено: ASE_DAG, 21:54 13-07-2013
Skif_off

Редактировать | Цитировать | Сообщить модератору
Pasha_ZZZ
В чем отличие этой версии от, например, версии Alex_Piggy?
Батник для обновления утилит от Nirsoft, сливаю так:

Код:
cd %temp%\nirsoft\soft
%UPDATE%\UTILITIES\WGET\WGET.EXE -P %temp%\nirsoft\soft -i %UPDATE%\UTILITIES\NIRSOFT\NIRSOFT.TXT
cd %temp%\nirsoft\trans
%UPDATE%\UTILITIES\WGET\WGET.EXE -P %temp%\nirsoft\trans -i %UPDATE%\UTILITIES\NIRSOFT\NIRSOFTTRANS.TXT

Версия 1.11.4 и 1.14 от Alex_Piggy сливают нормально, по Вашей ссылке - нет: ~треть-половина из списка и как-будто пытается все одновременно (слишком быстро, не успеваю понять, сужу по количеству скачанного), больше никак - продолжает висеть в памяти, а батник отрабатывает дальше (чего не должен делать, пока не докачается).
Покопался в мане - ничего, ключей, собственно, всего чуть.
 
Добавлено:
1.14 от Alex_Piggy 3и файла пропустила.

Отправлено: 18:57 14-07-2013 | Исправлено: Skif_off, 19:02 14-07-2013
Pasha_ZZZ



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Skif_off
Телепаты в отпуске, логи в студию...

Всего записей: 3758 | Зарегистр. 11-03-2002 | Отправлено: 23:40 14-07-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
Skif_off
 
Пока я вижу только сообщение "Есть проблема!" и полное отсутствие необходимой для её решения информации. Разве что доктор Кашмаровский сделает пару пасов с экрана и у вас чудесным образом всё заработает.

Отправлено: 00:30 15-07-2013
Skif_off

Редактировать | Цитировать | Сообщить модератору
Зачем же так сразу? Я думал, кто-нибудь из постоянно пользующихся уже сталкивался.
В общем, дело обстоит так:
запускаю батник, отрабатывает
WGET.EXE -P %temp%\nirsoft\soft -i %UPDATE%\UTILITIES\NIRSOFT\NIRSOFT.TXT
потом отрабатывает
WGET.EXE -P %temp%\nirsoft\trans -i %UPDATE%\UTILITIES\NIRSOFT\NIRSOFTTRANS.TXT
потом распаковка и прочее. Начало батника
 
С версией, предложенной Pasha_ZZZ, все по-другому:
запускаю батник, доходит до Wget, запускается
WGET.EXE -P %temp%\nirsoft\soft -i %UPDATE%\UTILITIES\NIRSOFT\NIRSOFT.TXT
и сразу же запускается
WGET.EXE -P %temp%\nirsoft\trans -i %UPDATE%\UTILITIES\NIRSOFT\NIRSOFTTRANS.TXT
Два wget.exe параллельно пашут, а батник продолжает работать дальше - пытается распаковать и растащить в нужные папки, а с фига ли, если еще не все скачалось? И ожидалось, что продолжение будет только когда завершит работу wget.exe, как это происходит с 1.11.4, если бы запускал

Код:
start "" WGET.EXE %bla-bla%

то понял бы, а так - нет.
Не докачивалось ибо когда закрывалось окно консоли, я прибивал оба wget.exe в диспетчере задач (чего им там делать то уже?).
Ну я и предположил, что запускаю неправильно

Отправлено: 01:17 15-07-2013 | Исправлено: Skif_off, 01:18 15-07-2013
Pasha_ZZZ



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Skif_off
Ну во-первых, ключ -o logfile в самом начале хелпа какбэ намекает. Во-вторых, можно попробовать использовать
Цитата:
start "" /w wget.exe

Всего записей: 3758 | Зарегистр. 11-03-2002 | Отправлено: 08:30 15-07-2013
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время
ASE_DAG
Спасибо. Но не работает. Не разобрался. Нашел как сделать.
 
Skif_off
Интересно. Что-то в настройках. Похоже, что где-то в доступе лежит .wgetrc (точнее, файл конфигурации) с "background = on". Посмотрел - это по умолчанию в настройках от osspack32 (TumaGonx Zakkum). Вы распаковали его wget.ini не сверяя/проверяя настройки?
Лог ничего не даст, потому что информация о режиме работы выводится в stderr. Наверное нужно продублировать. Что бы в лог (как минимум debug) выводились не-default ключи.

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 09:50 15-07-2013
Skif_off

Редактировать | Цитировать | Сообщить модератору
Pasha_ZZZ

Цитата:
Ну во-первых, ключ -o logfile в самом начале хелпа какбэ намекает.

Знаю про этот ключ, но тут я несколько протупил и нечаянно ввел в заблуждение, прошу прощения: раз батник продолжает работу, то предположил, что Wget завис - прибивал в диспетчере задач, естесственно докачать все он просто не успевал.
 
Alex_Piggy

Цитата:
Что-то в настройках. Похоже, что где-то в доступе лежит .wgetrc (точнее, файл конфигурации) с "background = on". Посмотрел - это по умолчанию в настройках от osspack32 (TumaGonx Zakkum). Вы распаковали его wget.ini не сверяя/проверяя настройки?

Так и есть, я - идиот: когда распаковал, собирался в нем покопаться, но решил не трогать, предположив, что там все по умолчанию, т.е. как обычно.
 

Отправлено: 14:40 15-07-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
Skif_off
 
Кстати, я для себя в /etc/wgetrc.conf специально прописал переход вгета в фоновый режим чтобы не мешал. Мне конечно не сложно переключится на другой экран, благо у UNIX их в запасе 256, но, ....

Отправлено: 14:44 15-07-2013 | Исправлено: Victor_VG, 14:45 15-07-2013
Skif_off

Редактировать | Цитировать | Сообщить модератору
Victor_VG
Под Win есть Dexpot, достойный и гибкий, но как-то не получается - под nix'ами пользоваться несколькими рабочими столами привычно, под Win как-то нет
Тут дело в другом - Wget переходил в фон, но батник работал дальше, а следующая команда - распаковка скачанного.

Отправлено: 14:59 15-07-2013
Pasha_ZZZ



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Skif_off
Цитата:
Wget переходил в фон, но батник работал дальше
В этом и есть смысл фонового процесса, иначе он бы фоновым не назывался.
Фактически фоновый процесс при запуске создает еще один процесс, который продолжает работу, а первоначальный завершается - и поэтому управление переходит дальше...

Всего записей: 3758 | Зарегистр. 11-03-2002 | Отправлено: 15:04 15-07-2013
Skif_off

Редактировать | Цитировать | Сообщить модератору
Все-таки, ИМХО, странная опция по умолчанию: утилита консольная, вариант ее использования в пакетных файлах/скриптах более чем очевиден и тут запуск с --background без явного прописывания в консоли вызывает легкое недоумение. Но с меня вину за невнимательность не снимает Спасибо за помощь и разъяснения.

Отправлено: 16:14 15-07-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
Skif_off
 
Знаю его, и он у меня на всей Win-части сети стоит уже несколько лет, народ доволен до потолка и сам его ставит туда где его нет.
 
Pasha_ZZZ правильно объясняет механизм работы фонового процесса - процесс-родитель создаёт новый независимый процесс в том же сеансе пользователя и передаёт ему управление, затем сообщает ОС о том что он выполнился без ошибок и завершается. А порождённый процесс работает с опцией HIDE_WINDOW, но проследить его работы можно через таблицы планировщика задач ОС - его PID обычно выводится, например с помощью программы hidcon: Hidden console
Андрея Гречкина - она как раз умеет запустить консольную задачу в фоне, проследить что она выполнилась и доложить об этом скрипту. Вам тогда в батнике надо её звать, а параметром ей давать вгет. Вот так он будет работать, иначе нет.

Отправлено: 16:21 15-07-2013
vitrzn



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
сам не смог найти ключ, который игнорирует, при скачивании с фтп архивов, ЗАГЛАВНыЕ или прописные буквы в имени файла  
например: LAW , law
подскажите его

Всего записей: 1160 | Зарегистр. 28-10-2007 | Отправлено: 15:24 23-07-2013
Pasha_ZZZ



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
vitrzn
Что значит
Цитата:
игнорирует, при скачивании
???

Всего записей: 3758 | Зарегистр. 11-03-2002 | Отправлено: 15:32 23-07-2013
vitrzn



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
архив 0808LAW.rar - качает , а 0808law.rar - нет
 
p.s. список того что надо качать задан в spisok.txt и там стоит LAW

Всего записей: 1160 | Зарегистр. 28-10-2007 | Отправлено: 15:34 23-07-2013
Pasha_ZZZ



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
vitrzn
Так и должно быть, по идее, под линуксом оба файла имеют право на сосуществование в одной директории одновременно (если ФС позволяет).
Лучше бы определиться с регистром имен или пробовать скачивать в 2 вариантах сразу.

Всего записей: 3758 | Зарегистр. 11-03-2002 | Отправлено: 15:39 23-07-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
Pasha_ZZZ
 
Не только. Операционные системы семейств UNIX, LINUX, Windows NT (если используется NTFS), IBM OS/2, IBM S/3x0 поддерживают регистрово-зависимые имена. Другое дело, что по умолчанию кривой софт от мелкомягких игнорирует регистровую зависимость имён NTFS, но сиё трудности исключительно сей "почтенной" конторы.

Отправлено: 16:58 23-07-2013 | Исправлено: Victor_VG, 16:59 23-07-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:32 (c) xForumSaver