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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
1. При таком раскладе
wget [email protected] --ftp-password=PASS ...  
 
Пишет:
wget: unrecognized option `[email protected]'
Usage: wget [OPTION]... [URL]...
 
2. При таком раскладе
wget -e "[email protected]" -e "ftp_password=PASS" ...  
 
Пишет:
wget: Invalid --execute command `[email protected]'
 
Версия wget 1.9.1

Всего записей: 8 | Зарегистр. 13-02-2007 | Отправлено: 08:35 03-04-2007
4get

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

Цитата:
* Changes in Wget 1.10.
..
** Wget now supports the --ftp-user and --ftp-password command
switches to set username and password for FTP, and the --user and
--password command switches to set username and password for both FTP
and HTTP.  

 
Новые версии под win32 можно скачать тут
http://xoomer.alice.it/hherold/
http://users.ugent.be/~bpuype/wget/

Всего записей: 956 | Зарегистр. 19-09-2001 | Отправлено: 11:19 03-04-2007 | Исправлено: 4get, 11:48 03-04-2007
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Tulosha
В 1.9.1 наверное так  
wget.exe -e "[email protected]" -e "passwd=superpassword"
 
Добавлено:
Даже уже без "наверное". Попробовал и экзешник 1.9.1 от Bart Puype и 1.9.1 от Heiko Herold(которая библиотек рядом требует) - работает.

Всего записей: 1595 | Зарегистр. 08-12-2004 | Отправлено: 12:26 03-04-2007
Tulosha

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Все отлично, работает! Спасибо!

Всего записей: 8 | Зарегистр. 13-02-2007 | Отправлено: 16:33 03-04-2007
dix75



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как приручить wget к прокси?
 
Добавлено:
Я выхожу через инет по прокси
Все выше стоящие советы не пашут

Всего записей: 154 | Зарегистр. 08-12-2005 | Отправлено: 11:02 18-04-2007
mithridat1



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dix75
А через какой прокси выходите ?

Всего записей: 3469 | Зарегистр. 05-01-2006 | Отправлено: 11:15 18-04-2007
igor_andreev

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

Цитата:
Все выше стоящие советы не пашут

У всех остальных пашут И в случае записи в .wgetrc и в случае использования прямо в комстроке -e. А что пишет wget в лог, будучи запущенным с параметром --debug ?

Всего записей: 1595 | Зарегистр. 08-12-2004 | Отправлено: 11:22 18-04-2007
latin



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dix75
Прокси корпоративный?
 
попробуйте так
http_proxy = IP:port - для НТТР
ftp_proxy = IP:port - для FTP
 
А вообще как не работает, не соединяет?
Я на работе пользуюсь Win_Weget оболочкой у меня то же прокси и там я в полях HTTP и FTP прописал как вам сказал и усе работает.

----------
Помни, правильно заданный вопрос это половина ответа
Те, кто жили до нас, многое свершили, но ничего не завершили. Сенека

Всего записей: 728 | Зарегистр. 01-03-2006 | Отправлено: 11:35 18-04-2007
dix75



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

Цитата:
попробуйте так  
http_proxy = IP:port - для НТТР  
ftp_proxy = IP:port - для FTP  
 
А вообще как не работает, не соединяет?  
Я на работе пользуюсь Win_Weget оболочкой у меня то же прокси и там я в полях HTTP и FTP прописал как вам сказал и усе работает.

 
спасибо помогла все работает
 
я без оболочки работаю люблю все по проще

Всего записей: 154 | Зарегистр. 08-12-2005 | Отправлено: 11:48 18-04-2007
latin



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

Цитата:
я без оболочки работаю люблю все по проще
Я то же, по этому и Вегетом пользуюсь. Но на работе не когда, вот ГУИ и исполбзую


----------
Помни, правильно заданный вопрос это половина ответа
Те, кто жили до нас, многое свершили, но ничего не завершили. Сенека

Всего записей: 728 | Зарегистр. 01-03-2006 | Отправлено: 12:02 18-04-2007
dix75



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

Цитата:
спасибо помогла все работает

 
извеняюсь помогло

Всего записей: 154 | Зарегистр. 08-12-2005 | Отправлено: 12:03 18-04-2007
dix75



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
помогите что не так?
wget -e "http_user=user"  -e "http_password=pass"  -e "http_proxy=192.168.100.100
:8080" -ilink.txt  -c
 
пытаюсь так качнуть

Всего записей: 154 | Зарегистр. 08-12-2005 | Отправлено: 08:10 26-04-2007
mithridat1



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dix75
wget  -e http_proxy=192.168.100.100:8080 --http-user=user --http-passwd=pass  -i link.txt  -c  
(если конечно имелся виду не пароль на прокси,а пароль на http-ресурс)

Всего записей: 3469 | Зарегистр. 05-01-2006 | Отправлено: 08:39 26-04-2007 | Исправлено: mithridat1, 08:40 26-04-2007
ATS2000

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите камрады!
 
Есть сайт, при заходе на его страницу  
 

Цитата:
hxxp://info.board.ru/auth.php

 
идёт запрос имени и пароля доступа, после авторизации попадаем на страницу с этим же адресом  
 

Цитата:
hxxp://info.board.ru/auth.php

 
и видим на экране список папок, ссылка на которые имеет вид  
 

Цитата:
hxxp://info.board.ru/auth.php?item=имя папки

 
Необходимо написать скрипт, который будет выкачивать из папок такого вида
все файлы с расширением rar. А ссылки на файлы имеют следующий вид  
 

Цитата:
hxxp://info.board.ru/auth.php?item=Folder1/test.RAR

 
 
Если качать конкретный файл то проблем нет, канает такой скрипт
 
set http_proxy=http://192.168.150.1:8080
wget -N -P "C:/Temp" --http-user="user" --http-passwd="pass" hxxp://info.board.ru/auth.php?item=Folder1/test.RAR
 
А вот как выкачать всё по расширению? Хелп спецы!  
 
P.S. Извините за мой французский

Всего записей: 217 | Зарегистр. 21-02-2005 | Отправлено: 13:37 01-05-2007 | Исправлено: ATS2000, 13:42 01-05-2007
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ATS2000
Список файлов rar в каждой папке на отдельной странице или на одной? Названия папок всегда одинаковые и ты их знаешь или могут меняться?
 
Если названий папок не знаешь, то скачивай  с авторизацией hxxp://info.board.ru/auth.php в отдельный файл и выдергивай названия папок командой FIND.
 
wget -O C:\TEMP\INDEX.TXT hxxp://info.board.ru/auth.php
type C:\TEMP\INDEX.TXT | find /i "auth.php?item=" >C:\TEMP\ALLFOLDERS.TXT
 
Ну а там каждую папку уже скачиваешь рекурсивно на один уровень, вроде
wget -r -l1 -A.rar --force-html -i C:\TEMP\ALLFOLDERS.TXT
 
 А можно и без -A, мне например больше нравиться скачивать в temp-файл и оттуда уже выдергивать нужные ссылки
wget -O C:\TEMP\FOLDER1.TXT hxxp://info.board.ru/auth.php?item=Folder1
type C:\TEMP\FOLDER1.TXT | find /i "auth.php?item=" | find /i ".rar" >C:\TEMP\FILES1.TXT
и оттуда уже
wget --force-html -i C:\TEMP\FILES1.TXT

Всего записей: 1595 | Зарегистр. 08-12-2004 | Отправлено: 15:08 01-05-2007
ATS2000

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
igor_andreev
 
Спасибо, попробую.
 
 
1) Названия папок известны и постоянны  
 
2) Список файлов в каждой папке на отдельной странице
 
 

Всего записей: 217 | Зарегистр. 21-02-2005 | Отправлено: 15:44 01-05-2007 | Исправлено: ATS2000, 17:14 01-05-2007
ATS2000

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
igor_andreev
 
Попробывал. Есть одна загвоздка, ссылки в файл FILES1.TXT пишутся в виде  

Цитата:
 
auth.php?item=FOLDER1/test1.rar
 т.е. без
Цитата:
http://info.board.ru/

 
И когда wget --force-html -i C:\TEMP\FILES1.TXT пытается их оттуда дёргать, то естественно не знает на какой хост стучаться.  
 
Как бы прикрутить хост?
 
 

Всего записей: 217 | Зарегистр. 21-02-2005 | Отправлено: 07:59 02-05-2007
8AleX8



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

Цитата:
Как бы прикрутить хост?


Цитата:
-B,  --base=URL            prepends URL to relative links in -F -i file.

Всего записей: 1812 | Зарегистр. 11-12-2001 | Отправлено: 08:04 02-05-2007
ATS2000

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
8AleX8
 
Спасибо, намёк понял буду изучать
Цитата:
wget --help  


Всего записей: 217 | Зарегистр. 21-02-2005 | Отправлено: 09:01 02-05-2007
ATS2000

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Камрады!
 
Добился я скачки файлов с вашей помощью, но вот что не устраивает:
 
Так как имена папок известны и постоянны, то задача упрощается:
 

Цитата:
set http_proxy=http://192.168.150.1:8080
wget -O C:\Temp\FOLDER1.TXT --http-user="user" --http-passwd="pass" http://info.board.ru/auth.php?item=FOLDER1/
wget -N --force-html -P C:\Temp\
--base=http://info.board.ru/ --http-user="user" --http-passwd="pass" -i C:\Temp\FOLDER1.TXT

 
Содержимое файла FOLFER1.TXT:
 

Цитата:
href='auth.php?item=FOLDER1/base2804.RAR'>base2804.RAR</a></td><td>  -  </td><td>23-04-2007 09:55:08</td><td>  -  </td><td>1,71 &#9568;&#223;&#945;&#920;&#8805;</td></tr><td width=30><img src="/images2/file.gif" alt="[FILE]"></td><td><a href='auth.php?item=FOLDER1/base2304.RAR'>base2304.RAR</a></td><td>  -  

 
 
В результате работы скрипта
 
1) Скачиваются все подряд файлы и gif и rar
2) rar файлы скачиваются со следующими именами:
 

Цитата:
=auth.php?item=FOLDER1%base2804.RAR
=auth.php?item=FOLDER1%base2304.RAR

 
3) Дата у файлов ставится текущей, а не той когда эти файлы положили на хост
 
Как устранить эти недостатки? Особенно интересует действие ключа -N, чтоб качались только новые файлы.

Всего записей: 217 | Зарегистр. 21-02-2005 | Отправлено: 05:05 03-05-2007 | Исправлено: ATS2000, 08:27 03-05-2007
Открыть новую тему     Написать ответ в эту тему

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