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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день!
 
Пробую скачать с FTP файл, на Windows XP всё качается замечательно, а на Windows 7 x32 выдаёт ошибку таймаута:
============================
Connecting to 172.16.15.12:21... connected.
Logging in as Anonymous ... Logged in!
==> SYST ... done.    ==> PWD ... done.
==> TYPE I ... done.  ==> CWD (1) /BBS Service Bank/curd ... done.
==> SIZE curd0605.arj ... 1077
==> PASV ... couldn't connect to 172.16.15.12 port 24190: Connection timed out
Retrying.
============================
Программу добавил в разрешения брандмауэра.
 
Выкачивать пробую вот такой командой:
 
wget.exe --ftp-user=Anonymous --ftp-password=1 -nd C:\Bank_msg\ ftp:"//172.16.15.12/BBS Service Bank/curd/curd0605.arj"
 
или
 
wget.exe --no-passive-ftp -nd C:\Bank_msg\ ftp:"//172.16.15.12/BBS Service Bank/curd/curd0605.arj"
 
В чём может быть причина ?

Всего записей: 18 | Зарегистр. 01-12-2011 | Отправлено: 13:45 05-06-2014 | Исправлено: Repoman, 13:48 05-06-2014
Victor_VG

Редактировать | Цитировать | Сообщить модератору
Repoman
 
А кто вам сказал, что URL ftp:"//172.16.15.12/BBS Service Bank/curd/curd0605.arj" записан правильно? Вроде пока существовала только одна форма записи URL  ftp://172.16.15.12/BBS Service Bank/curd/curd0605.arj или специально для вас тайком ввели её новые варианты?
 
Да и кто вам сказал что данный IP доступен вне своей локалки? Вдумчиво почитайте RFC 1918 Address Allocation for Private Internets, page 3:

Цитата:
3. Private Address Space
 
   The Internet Assigned Numbers Authority (IANA) has reserved the
   following three blocks of the IP address space for private internets:
 
     10.0.0.0        -   10.255.255.255  (10/8 prefix)
     172.16.0.0      -   172.31.255.255  (172.16/12 prefix)
     192.168.0.0     -   192.168.255.255 (192.168/16 prefix)


Отправлено: 15:13 05-06-2014 | Исправлено: Victor_VG, 15:36 05-06-2014
Repoman

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Повторюсь, эта же команда работала на Windows XP один в один (с кавычками)!
Для выхода на этот IP я прописал маршрут через route add, через Total Commander без проблем хожу на этот FTP и нет проблем с доступом в локальную сеть (в системе 2 сетевых интерфейса)
 
Более того, сейчас эта же команда заработала и на Windows 7 и именно с кавычками, т.е. без кавычек не находит путь, а путь у меня с пробелами.
Вот пример заработавшей команды:
 
C:\Bank_msg\wget.exe --no-passive-ftp -nd C:\Bank_msg\ ftp:"//172.16.15.12/BBS Service Bank/curd/curd0605.arj"
 
Я не знаю почему заработало, единственное я в "Панель управления\Все элементы панели управления\Брандмауэр Windows\Разрешенные программы" удалил все строчки с wget и добавил его заново с разрешением домашних (рабочих) и публичных сетей, потом отлучился на полчасика =))

Всего записей: 18 | Зарегистр. 01-12-2011 | Отправлено: 16:11 05-06-2014 | Исправлено: Repoman, 16:14 05-06-2014
Victor_VG

Редактировать | Цитировать | Сообщить модератору
Repoman
 
Между "НЕ ЗНАЮ" и "НЕ ХОЧУ ДУМАТЬ" у вас стоит жирный знак равенства, а раз так, то вам сюда прямой наводкой, нечего набивать флудо-посты....

Отправлено: 16:27 05-06-2014 | Исправлено: Victor_VG, 16:29 05-06-2014
FGHGJGJSD22

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

Всего записей: 44 | Зарегистр. 09-07-2007 | Отправлено: 17:50 13-06-2014 | Исправлено: FGHGJGJSD22, 22:38 13-06-2014
D1D1D1D

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Возможно ли настройка скачивания таких ссылок? —
 

Код:
http://slovari.yandex.ru/~книги/Этимологический%20словарь/Абажур/
http://slovari.yandex.ru/~книги/Этимологический%20словарь/Аббревиатура/
http://slovari.yandex.ru/~книги/Этимологический%20словарь/Абзац/
http://slovari.yandex.ru/~книги/Этимологический%20словарь/Абитуриент/
http://slovari.yandex.ru/~книги/Этимологический%20словарь/Аборигены/

Всего записей: 392 | Зарегистр. 04-04-2010 | Отправлено: 12:39 24-06-2014
Victor_VG

Редактировать | Цитировать | Сообщить модератору
D1D1D1D
 
через скрипты перекодировщики, напрямую получим 404-ю.

Отправлено: 15:12 24-06-2014
D1D1D1D

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Victor_VG
 
Имеются в виду какие-то готовые скрипты или их нужно налаживать?

Всего записей: 392 | Зарегистр. 04-04-2010 | Отправлено: 15:43 24-06-2014
Victor_VG

Редактировать | Цитировать | Сообщить модератору
D1D1D1D
 
Свои писать по месту придётся. Готовые вряд-ли отыщите.

Отправлено: 17:24 24-06-2014
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время, D1D1D1D, Victor_VG
Что нужно получить? Где? Для чего перекодировщики?
Если в Win cmd, то --local-encoding=CP866 или --local-encoding=CP1251 пробовали? (существует где-то с 1.12)
wget --local-encoding=CP1251 "http://slovari.yandex.ru/~книги/Этимологический словарь/Абажур/" -O "Абажур.html"
или в бат файле (кодировка должна быть CP866!)
for %%i in (Абажур, Аббревиатура, Абзац, Абитуриент, Аборигены) do wget --local-encoding=CP1251 "http://slovari.yandex.ru/~книги/Этимологический словарь/%%~i/" -O "%%~i.html"

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 17:31 24-06-2014
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D, не знаю, что имеет в виду т. Виктор В. Г., но все там прекрасно загружается совершенно прямо и бесхитростно:
 
$ wget 'http://slovari.yandex.ru/~книги/Этимологический словарь/Абажур/'
 
Добавлено:
D1D1D1D, кстати, прежде чем выкачивать с Яндекса «Школьный этимологический словарь» Шанского, вы хорошо удостоверились, что никто этого не сделал до вас? Я вот как-то сходу нашел его не далее как в списке рубордовского словарного общества.

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 18:06 24-06-2014 | Исправлено: ASE_DAG, 18:41 24-06-2014
D1D1D1D

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо за инфу по кодировкам! к тому же оказалось, что не с той версией wget я смотрел: с этой, подготовленной Alex_Piggy, спасибо, заработало)))
 
Добавлено:
ASE_DAG
Спасибо, но что-то не разберу, как его оттуда вытянуть... И это вроде Lingvo версия?

Всего записей: 392 | Зарегистр. 04-04-2010 | Отправлено: 18:56 24-06-2014
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D> как его оттуда вытянуть
 
Тыц. Но можете просто попросить кого-нибудь, у кого есть доступ к обменнику, залить на общедоступное место. (У меня за ненадобностью нету, так что меня не просите).
 
> Lingvo
 
Бинарный формат Лингвы (если там бинарный), вроде-бы, и закрытый, но давно разобранный, и утилиты для декомпиляции давно написаны, и для конвертации в другие форматы тоже.

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 19:34 24-06-2014
D1D1D1D

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG, спасибо, но сложно это))) К тому же я не уверен, что там будут иметься внутренние ссылки между статьями, как на Яндексе. Просто в виде текста он и здесь есть.

Всего записей: 392 | Зарегистр. 04-04-2010 | Отправлено: 20:14 24-06-2014
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D, хозяин — барин.

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 20:29 24-06-2014
Victor_VG

Редактировать | Цитировать | Сообщить модератору
Alex_Piggy
 
У себя попробовал - ClipCach счудил, но за оным фокусы с кодировкой тащатся как за собакой хвост. Я уже привык к этому.

Отправлено: 14:35 25-06-2014
jr13ster

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
День добрый. Столкнулся с проблемой. На Win 8.1 не работает плюшка --timeout=СЕК. На WinXP все работает отлично. Как решить вопрос?

Всего записей: 49 | Зарегистр. 12-01-2007 | Отправлено: 09:33 07-08-2014
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
jr13ster> не работает
 
Не понял. Так и говорит, не работаю, мол, извини?

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 09:51 07-08-2014 | Исправлено: ASE_DAG, 09:52 07-08-2014
jr13ster

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Виснет на  
 
Conecting to ip:port...
 
а на Win XP через 10 сек (--timeout=10) делает вторую попытку и так до N раз указанных в --tries=N.
 
Все через прокси.

Всего записей: 49 | Зарегистр. 12-01-2007 | Отправлено: 10:01 07-08-2014 | Исправлено: jr13ster, 10:04 07-08-2014
Victor_VG

Редактировать | Цитировать | Сообщить модератору
jr13ster
 
Я бы посмотрел именно настройки прокси т.к. стек протоколов в новых версиях той же винды был переработан, да и мелкомягкие не сильно скрывают тот факт, что WinAPI в Win8 был "доработан" и многие функции заменены заглушками. Как пример пара GetVersion() и GetVersionEx() на которой сам нарвался в итоге чего мне пришлось не просто переписывать свой код, а чесать левой задней ногой правое переднее ухо ибо в тот момент эти изменения даже не были документированы, а на мой вопрос "Что переписать чтобы работало?" M$ ответила "Эта информация коммерческая тайна компании и не разглашается. Пользуйтесь только нашими продуктами!".

Отправлено: 14:43 07-08-2014
Открыть новую тему     Написать ответ в эту тему

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