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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Прошу прощения, я новичек в этом деле. Пытаюсь скачать сайт, но помимо основной папки проекта с названием сайта качается еще куча левых папок и файлов с названиями других сайтов. Как можно этого избежать используя правильную комбинацию команд? Заранее спасибо!
 
Использовались команды:
 
wget -m -k -p -E -Dexample.com http://example.com/

Всего записей: 3 | Зарегистр. 19-03-2011 | Отправлено: 02:50 19-03-2011 | Исправлено: supadupa, 14:30 19-03-2011
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
supadupa
> wget -m -k -p -E -Dexample.com http://example.com/
В данном случае все корректно, с доменов отличных от example.com ничего загружаться не будет.
Единственное замечание: все-таки отделяйте ключ от его значения пробелом, в данном случае распарсится так, как вы предполагали, но так будет не всегда.

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 18:29 19-03-2011
supadupa

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
А что будет если добавить параметр --max-redirect=0 тогда ведь точно wget не будет переходить по внешним ссылкам? Или этот параметр в данной ситуации не стоит применять? Просто при загрузке все равно создаются лишние папки.

Всего записей: 3 | Зарегистр. 19-03-2011 | Отправлено: 22:27 19-03-2011
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
supadupa
Вы не дали конкретного примера, поэтому мне трудно судить о причине неожидамого поведения в данном случае.
Однако, при использовании -D даже при наличии редиректов сабж не должен ничего загружать с иных доменов, в этом кстати легко убедиться на том примере, что вы привели (с example.org).

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 22:38 19-03-2011
supadupa

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
пример:
 
wget -m -k -p -E -t1 -D example.com --max-redirect=0 http://example.com/ -o logfile.log
 
С парамером --max-redirect=0 пока вроде бы лишнего ничего не загружается.  
Интересно оказывается одного параметра -D example.com не достаточно.
 

Всего записей: 3 | Зарегистр. 19-03-2011 | Отправлено: 22:51 19-03-2011 | Исправлено: supadupa, 22:55 19-03-2011
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
supadupa
Что «пример»? Ну в этом случае, разумеется, ничего не сохранено.

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 22:53 19-03-2011
sis_terr



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
доступ в инет сделан через Kerio WinRoute Firewall,
запускаю свою Оперу с флешки, прописываю прокси:порт,
при попытке войти на какой либо сайт выскакивает окошко, ввожу логин\пароль,
всё работает, но ,блин , записала всё это в батнике
http_proxy=http://логин:пароль@10.1.3.2:3128/
Wget пишет :Unsupported scheme, где я накосячила?

Всего записей: 1271 | Зарегистр. 20-12-2007 | Отправлено: 16:28 22-03-2011
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sis_terr
> :Unsupported scheme
У меня нет сейчас Винды под рукой, но я могу предположить, что какой-то из символом она (в отличие от Баша) воспринимает как служебный.  
Закавычьте строку.

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 19:07 22-03-2011
sis_terr



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ASE_DAG, да мне не к спеху, раньше четверга на тех машинах не буду
да к тому же там вин98 )) всяко может быть
закавычить строчку - это двойные кавычки от http до последнего слеша?

Всего записей: 1271 | Зарегистр. 20-12-2007 | Отправлено: 20:13 22-03-2011 | Исправлено: sis_terr, 20:15 22-03-2011
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sis_terr
Да.  
http_proxy="http://логин:пароль@10.1.3.2:3128"
 
> вин98
О_о Да, вы правы, в этом случае может быть всяко. В частности, почему вы уверены, что проблема именно в приведенном фрагменте? Точно та же команда, но без прокси, работает? Или нет никакой возможности это проверить?
Если нет, то уверенным в правильной локализации проблемы быть не стоит. ;)

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 03:53 23-03-2011
sis_terr



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ну у меня стандартный бат файл для той группы машин, там без прокси уже никак не проверить, но раньше с него всё нормально запускалось и качалось, теперь вот добавила только вход через этот шлагбаум))

Всего записей: 1271 | Зарегистр. 20-12-2007 | Отправлено: 14:05 23-03-2011
sis_terr



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
не, кавычки не помогли (
все равно пишет  логин:пароль@10.1.3.2:3128 :Unsupported scheme
 
пробовала и так
--proxy-user=логин --proxy-password=пароль,
тоже ничего не добилась

Всего записей: 1271 | Зарегистр. 20-12-2007 | Отправлено: 16:15 24-03-2011 | Исправлено: sis_terr, 16:49 24-03-2011
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sis_terr
Хм... Логин и пароль ничего кроме букв латинского алфавита и цифр не содержат?

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 17:56 24-03-2011
vitrzn



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ASE_DAG
Схожая ситуация (((
логин содержит @ и .
 пример  [email protected]  , а пароль нормальный , т.е. буковки
 
как-то можно решить ?
 
p.s. ручками через браузер захожу без проблем

Всего записей: 1160 | Зарегистр. 28-10-2007 | Отправлено: 18:45 24-03-2011 | Исправлено: vitrzn, 18:50 24-03-2011
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vitrzn
Писать вместо собаки %40. Точка, афайк, мешать не должна.

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 19:11 24-03-2011
sis_terr



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ASE_DAG, да  там простейший пароль и логин, всё латиницей, вот на другом компе где ХР, с более завёрнутыми паролями\ логинами, прям сейчас нормально качает.
домой приду, внимательнее сравню батники,  

Всего записей: 1271 | Зарегистр. 20-12-2007 | Отправлено: 19:13 24-03-2011 | Исправлено: sis_terr, 19:41 24-03-2011
GhoolVandal



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Задача: Бэкап сайта по FTP на комп в службой.
 
Пытался бэкапить wget-ом - столкнулся с двумя проблемами.
1) пробелы превращает в @20
2) удалённые на FTP файлы не удаляет на локальном компе.
 
как решить?
может не wget пользовать?

Всего записей: 250 | Зарегистр. 14-08-2005 | Отправлено: 20:01 24-03-2011 | Исправлено: GhoolVandal, 20:08 24-03-2011
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sis_terr
Ну, не знаю, не может возникать ошибка парсинга строки, если строка корректная.
 
> вот на другом компе где ХР
И команды, что вы отдаете, полностью идентичные?
Кстати где вы задаете эту переменную? В окружении (set http_proxy=, или как там это в Винде делается), в .wgetrc или при помощи ключа -e? Попробуйте по-другому.
 
Сабж на проблемной машине, случаем, не ровесник оси, которая на ней стоит? :)  
Иначе говоря, какая версия и чьей сборки?
 
Добавлено:
GhoolVandal
Не дублируйте посты.
 
sis_terr
> домой приду, внимательнее сравню батники,  
Жду. :)
А лучше дайте проблемный скрипт сюда (или в личку) полностью. Пароли ведь там сугубо локальные, посему не конфиденциальные.

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 20:08 24-03-2011
sis_terr



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
1. Wget абсолютно идентичен, взят с шапки, классический, без иконки,
как то пробовала и тот который с иконкой, но он что то глючно работал
2.Запускаю с bat - файла, батники идентичны, отличаются только пути
 .wgetrc еще не знаю как применить, bat-а хватает
 
вот, самый простой для Вин98

Код:
wget.exe -HEkp -nc  -e robots=off http_proxy="http://IC5:[email protected]:3128" -iC:\#\Fulln.txt   -PC:\#\D -D dl.ziza.ru,ziza.qip.ru,warnet.ws,monk.com.ua, -X/engine,/sites,/javascript,/rek,/templates,/adv,/layout,/mediagallery,/landfm.com,/uploads  

 
папка # - это моя личная на том компе, с Wget-ом, Оперой и др,  
туда никто не лазит под страхом испепеления моим взглядом))
 
вот аналогичный батник для группы машин с ХР, находится и запускается с флешки

Код:
wget.exe -HEkp -nc  -e robots=off http_proxy=http://ibo:[email protected]:3128/ -iG:\#\Fulln.txt   -PG:\#\D -D dl.ziza.ru,ziza.qip.ru,warnet.ws,monk.com.ua, -X/engine,/sites,/javascript,/rek,/templates,/adv,/layout,/mediagallery,/landfm.com,/uploads  

 
может на 98й ему собачка не нравится, как писали выше?
есть еще бат файл для закачки страниц с nnm.ru там сложнее из-за залогинивания на сайте, приём куков, тоже на 98й работало нормально

Всего записей: 1271 | Зарегистр. 20-12-2007 | Отправлено: 03:04 25-03-2011 | Исправлено: sis_terr, 03:31 25-03-2011
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sis_terr
> wget -e robots=off http_proxy=http://ibo:[email protected]:3128/
Удивительно, что в Хрюше это работает, у меня на Дебиане вполне справедливо ругается — пробел никак не является разделителем между строками rc-файла, если хотите уместить несколько строк в одной, пишите ключ -e перед каждой:
wget -e robots=off -e http_proxy=http://ibo:[email protected]:3128/
 
Я крайне удивлюсь, если причина проблемы окажется не в этом. :)

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

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