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

Редактировать | Цитировать | Сообщить модератору
Anton Nikolaev
 
Интересно бы полный лог FTP поглядеть и что у нас там за сервер такой сидит? Тут явно что-то очень простое, но мы его не замечаем именно из-за очевидности...

Отправлено: 18:14 10-07-2013
Anton Nikolaev

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

Всего записей: 39 | Зарегистр. 18-04-2008 | Отправлено: 18:17 10-07-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
Anton Nikolaev
 
Давайте. Думаю что в логе мы увидим что происходит.

Отправлено: 18:29 10-07-2013
Anton Nikolaev

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
полный лог: http://pastebin.com/RqeSnfs4
думаю, интересный кусочек:

Цитата:
DIRECTORY; perms 644;  
Skipping.
DIRECTORY; perms 644;  
Skipping.
DIRECTORY; perms 644;  
Skipping.
 

и так все директории он пропускает

Всего записей: 39 | Зарегистр. 18-04-2008 | Отправлено: 09:03 11-07-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
Anton Nikolaev
 
А вот это интересно - права доступа RW-R--R-- , сервер СУБД Oracle который и блокирует считывание из подкаталогов. Попробуйте более новую версию 1.14.

Отправлено: 11:32 11-07-2013
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день Victor_VG Anton Nikolaev
1. Работа с FTP с 2007 года практически не менялось. То есть да, попробовать стоит, но маловероятно что поможет.
2. Считывание из субкаталогов ИМХО не заблокировано. Вообще-то после perms должно было идти имя папки/файла. Похоже что проблема при парсинге листинга. ftp_ls.c:ftp_parse_unix_ls.
Кусок листинга есть, кусок лога есть. Вечером буду разбиратся.

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 11:43 11-07-2013
Anton Nikolaev

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

Всего записей: 39 | Зарегистр. 18-04-2008 | Отправлено: 11:44 11-07-2013 | Исправлено: Anton Nikolaev, 11:47 11-07-2013
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Anton Nikolaev
Кажется разобрался. Попробуйте. wget_Anton Nikolaev.zip.  
В листинге, который Вам дает сервер имя месяца в uppercase. В ftp_ls.c (для версии 1.11.4 207 строка)
if (!strcmp (tok, months[i]))
заменил на  
if (!strcasecmp (tok, months[i]))
Если заработает - сможете оформить/отослать багрепорт на [email protected] ? Пожалуйста. Мне просто сейчас (бумажная волокита)/(оформление документов) поперек горла стоит.
Добавлено - забыл упомянуть что это - без SSL. Не спросил, Вы работаете с обычным FTP или FTPS. Если для проверки нужно именно с SSL  - скажите - добавлю.

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 13:28 11-07-2013 | Исправлено: Alex_Piggy, 13:30 11-07-2013
Anton Nikolaev

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

Всего записей: 39 | Зарегистр. 18-04-2008 | Отправлено: 13:58 11-07-2013
Skif_off

Редактировать | Цитировать | Сообщить модератору
comrades, подскажите, пожалуйста, где можно найти актуальную Win-версию со всеми возможностями и чтобы все в одном месте? Пользуюсь 1.11.4 отсюда (wget.exe+libeay32.dll+libiconv2.dll+libintl3.dll+libssl32.dll+msvcp60.dll+msvcrt.dll), хочется свежего

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



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Skif_off
Такой сойдет?
WGet 1.14 + WGet optional files

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

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

Цитата:
+digest +https +ipv6 +iri +large-file +nls +ntlm +opie +ssl/openssl

Спасибо, кажется, это все, только размер непривычно маловат
locale - локализация сообщений Wget и только?
Стоит дожидаться исправлений Alex_Piggy в исходниках или ситуация достаточно специфична, чтобы забить? Просто не уверен, что удержу в голове.
Обнаружил у себя в заначках папку doc, не помню откуда, дата файлов 2012.08.07, в описании версия 1.14, могу считать это актуальной документацией?

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



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Skif_off
Цитата:
locale - локализация сообщений Wget и только?
ага, национальные имена файлов будут работать и так
Цитата:
или ситуация достаточно специфична
Специфична для какого-то узковзятого ФТП-сервера
Цитата:
могу считать это актуальной документацией?
ага
Цитата:
только размер непривычно маловат
при скачивании вверху надпись
Цитата:
wget 1.14 UPXed
какбэ намекает
В распакованном виде размер 1523 К

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

Редактировать | Цитировать | Сообщить модератору
Skif_off
 
Распакуйте содержимое wget_optional_files.7z в один каталог с Wget.exe и настройте по справке стандартные значения ключей в wget.ini которые будут применяться по умолчанию. Единственный кого стоит заменить на более новый это ca-bundle.crt (его имя должно быть именно таким) - этот я делал 10.04.2013 с помощью Win32 OpenSSL SDK и там учтены все отозванные и обновлённые на тот момент времени сертификаты.
 
Что до размера Wget.exe то Pasha_ZZZ верно сказал - исполняемый модуль сжат пакером UPX v3.08. Если у вас программа жрёт слишком много памяти, то распакуйте его любой более старшей версией (младшие не возьмут) командой upx -d wget.exe. В некоторых случаях код распаковки UPX может использовать до 8 - 12 Мб ОЗУ для своей работы.

Отправлено: 16:09 11-07-2013
Skif_off

Редактировать | Цитировать | Сообщить модератору
Pasha_ZZZ, Victor_VG
Спасибо за пояснения, сертификат заменил, из локализаций временно оставил только ru (посмотрю как будет, в теме вроде что-то было, в качестве лечения предлагалось грохнуть папку locale).
С UPX неловко получилось - не заметил, прочитал только Description:

Отправлено: 16:37 11-07-2013 | Исправлено: Skif_off, 16:50 11-07-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
Skif_off
 
С UPX бывает. Русской локалью сообщения будут выводится по русски. Собственно для того она и нужна если локаль юзера русская.

Отправлено: 17:52 11-07-2013 | Исправлено: Victor_VG, 17:54 11-07-2013
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время всем.
Вариант шапки. Добавил свою сборку, спрятал FAQ под more.  
__________________________________________________________________________________________
 
[ UNIX Shell ] || [ Рекурсивная загрузка веб-сайтов ] — родительские ветки.

 
GNU Wget

GNU Wget — это свободная неинтерактивная утилита для скачивания файлов по HTTP, HTTPS и FTP (и только), обладающая самым базовым функционалом загрузки одиночных файлов и рекурсивной загрузки сайтов (HTTP) и директорий (FTP).
 

| Офсайт | Википедия | Фрешмит | Охлох | Ман | Ман (русск.) |

 
Где взять.
Под GNU — уже стоит. Под FreeBSD — есть в портах. Под Mac OS X — собрать ванильный.  
Под Windows есть варианты: 0) Cygwin,  1) GNUWin32 (учитывайте зависимости), 2) Wget + OpenSSL by GetGnuWin32, 3) by Bart Puype 4) by osspack325) by Alex_Piggy
 
Литература.
Popkov. Параметры программы wget
В. А. Петров. Wget — насос для Интернета
 
FAQ (ответы под more). Нажмите здесь, чтобы прочитать полностью
Q:Можно ли простым перебором загрузить страницы (допустим) с первой по сотую c последовательной нумерацией: Ответ:
Q: А как собственно сайт целиком-то загрузить? Ответ:
Q: Я хочу загрузить с сайта, требующего авторизации. Что делать? Ответ:
Q: Не-ASCII символы сохраняются в именах файлов как "%D0%A5%D1%83%D0%B9" (или того хуже)Ответ:
Q: Известно, что можно приказать Вэ-гету обновить ранее загруженный файл, если на сервере новее или иного размера (ключ --timestamping, он же -N). Можно приказать учитывать только дату, но не размер (--timestamping --ignore-length). А можно ли учитывать только размер, но не дату? Ответ:
Q: Можно ли приказать Вэ-гету докачать файл, но только если он не изменился. Ответ:
Q: Можно ли при рекурсивной загрузке ограничится только ссылками, содержащими параметр "lang=ru"Ответ:
Q: Можно ли средствами Вэ-гета ограничить перечень загружаемых файлов по дате модификации (новее чем, старше чем)?Ответ:
Q:  То — нельзя, это — невозможно. Почему все так плохо?Ответ:
Q: Какие есть альтернативы?Ответ:
 
Разное.
GUI для Wgetа
 

Смело правьте и дополняйте шапку, однако не забывайте отписываться об исправлениях и сохранять исходный вариант под #.

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 20:33 11-07-2013 | Исправлено: Alex_Piggy, 17:43 12-07-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
Alex_Piggy
 
По моему годится.

Отправлено: 22:06 11-07-2013
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
> Добавил свою сборку
Дополняйте смело же! Что тут обсуждать.
 
> спрятал FAQ под more
А вот здесь я был бы категорически против. Во-первых, его и так не всегда проглядывают прежде задавать вопрос, а теперь вовсе не будут — чем меньше за что есть зацепиться глазу, тем, очевидно, менее вероятно, что зацепится. Во-вторых в свернутом виде его крайне неудобно читать — т. е. не искать ответ на свой вопрос, а именно читать от начала до конца. А в-третьих, собственно зачем его сворачивать? Разве пусть даже сколько угодно длинная кому-нибудь мешает? Основной тип перехода в ветку, насколько я понимаю, — к последнему посту (...&glp#lt) — здесь длина шапки никакой роли не играет.

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 01:58 12-07-2013 | Исправлено: ASE_DAG, 02:18 12-07-2013
Pasha_ZZZ



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Alex_Piggy
Можно про обновление по размеру добавить это - http://forum.ru-board.com/topic.cgi?forum=5&topic=10066&start=1541&limit=1#1

Всего записей: 3758 | Зарегистр. 11-03-2002 | Отправлено: 09:00 12-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:28 (c) xForumSaver