Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Wget

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178

Открыть новую тему     Написать ответ в эту тему

GaDiNa



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
[ UNIX Shell ] || [ Рекурсивная загрузка веб-сайтов ] — родительские ветки.
 
GNU Wget

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

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

 
Где взять.
Под GNU — уже стоит. Под FreeBSD — есть в портах. Под [Mac] OS X — собрать ванильный.  
Под Windows есть варианты: Cygwin | GNUWin32 (учитывайте зависимости) | Wget + OpenSSL by GetGnuWin32  | by TumaGonx Zakkum (он же osspack32 и The Moluccas  |  by Jernej Simoncc (32 и 64 бит отдельные пакеты) | Wget2.
.
 
Литература.
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»; у Хрома — «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) и многими другими протоколами на более низком уровне.
wput — клон wget для аплоада файлов на удаленные FTP(S) сервера.
axel — клон wget для многопоточной загрузки одиночных файлов по протоколам HTTP(S) и FTP(S). Порты для Windows: 2.4, 2.16.1
 
Разное.
GUI для Wget’а
 

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

Всего записей: 1551 | Зарегистр. 17-06-2003 | Отправлено: 13:39 08-11-2003 | Исправлено: anynamer, 11:40 25-12-2023
mselin

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо! Работает!
Хотя конечно опасность затереть файл все равно остается...

Всего записей: 68 | Зарегистр. 25-09-2006 | Отправлено: 22:29 11-11-2007
evgenych

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть ссылка
http://stg190.ifolder.ru/download/?2666033&nCy54OmXrdwVf1Y7OTU0gwzAiTEX5fOs%2Bxs1lYZiBJs%3D
 
Опера сохраняет с нормальным именем типа
Casa musica - Premium Standard - Ballroom Fascination Part1 (1-10).rar
 
Wget сохраняет что то типа такого
2666033&nCy54OmXrdwVf1Y7OTU0gwzAiTEX5fOs%2Bxs1lYZiBJs%3D
 
Можно ли wget заставить сохранять с нормальным именем?

Всего записей: 194 | Зарегистр. 20-07-2003 | Отправлено: 20:40 14-11-2007 | Исправлено: evgenych, 20:54 14-11-2007
chmaxim

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

Цитата:
Собрано с MSVC 8.0 SP1 Express Edition. Немного модифицированы ключи компилятора с целью уменьшить объём output binary. требует установки VC 8.0 SP1 runtimes. собрано с последней OpenSSL, тоже скомпилированной из исходников. Вархиве также версия без поддержки SSL.  
 
Wget 1.11 beta 1: http://tinyurl.com/ywxbcy

Пытался попробовать сборку. Не запускается. Не установлен  VC 8.0 SP1 runtimes.
Не могли бы дать ссылку где скачать. не могу найти.

Всего записей: 233 | Зарегистр. 26-08-2006 | Отправлено: 07:53 17-11-2007
makarei



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

Цитата:
Пытался попробовать сборку. Не запускается. Не установлен  VC 8.0 SP1 runtimes.
Не могли бы дать ссылку где скачать. не могу найти.

 
Здесь (x86) и здесь (x64).

Всего записей: 1127 | Зарегистр. 27-03-2007 | Отправлено: 09:57 17-11-2007
bk99ru

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как сделать, чтобы файл при скачивании переименовывался. Допустим, на сервере:
 
file.txt
 
а после скачивания (и в процессе скачивания) он был:
 
list.c

Всего записей: 14 | Зарегистр. 05-05-2006 | Отправлено: 13:39 20-11-2007
The Unforgiven



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

Цитата:
Можно ли wget заставить сохранять с нормальным именем?

 
bk99ru

Цитата:
Как сделать, чтобы файл при скачивании переименовывался

 
Я сам нередко пользуюсь Wget, и буду рад, если меня кто-нибудь поправит.
По-моему, он не умеет ни то, ни другое

Всего записей: 3665 | Зарегистр. 20-12-2001 | Отправлено: 22:42 20-11-2007
volodyalipkin



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bk99ru
wget -o list.c http://somewhere.com/file.txt

Всего записей: 771 | Зарегистр. 12-10-2002 | Отправлено: 01:20 21-11-2007
hhr

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

Цитата:
Опера сохраняет с нормальным именем типа  
Casa musica - Premium Standard - Ballroom Fascination Part1 (1-10).rar  
 
Wget сохраняет что то типа такого  
2666033&nCy54OmXrdwVf1Y7OTU0gwzAiTEX5fOs%2Bxs1lYZiBJs%3D  
 
Можно ли wget заставить сохранять с нормальным именем?

есть подозрение, что стоит заюзать ключик --referer
опера есть браузер, а wget - всего лишь средство получение контента. так что включить голову и подумать, что делает браузер при закачке, и сымитировать такое поведение.
 

Цитата:
Как сделать, чтобы файл при скачивании переименовывался.

почитать мануал про ключик -O
 
Добавлено:

Цитата:
wget -o list.c http://somewhere.com/file.txt

ключ -o просто выведет лог закачки вместо консоли в файл list.c
не забываем про  регистр

Всего записей: 289 | Зарегистр. 20-03-2005 | Отправлено: 02:47 21-11-2007
bk99ru

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

Цитата:
Цитата:Как сделать, чтобы файл при скачивании переименовывался.  
 
почитать мануал про ключик -O  

 
Спасибо, работает!

Всего записей: 14 | Зарегистр. 05-05-2006 | Отправлено: 14:35 23-11-2007
flymster

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет. Стоит такая задача: проиндексировать сайт с помощью вгета, т.е. создать список URL ко всем файлам на сайте. Чтобы потом, допустим с другой тачки, удалив ненужные ссылки из файла, поставить список урл из этого файла на закачку (а это уже делается насколько я помню так: wget -i "url_filelist"). Подскажите, пожалуйста, есть ли возможность это сделать? Сколько я не искал, не нашёл в документации такой возможности - может плохо искал...
Спасибо.

Всего записей: 5 | Зарегистр. 24-10-2007 | Отправлено: 16:49 25-11-2007 | Исправлено: flymster, 16:55 25-11-2007
popkov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
flymster
Надеешься съэкономить траффик? Для формирования такого списка wget всё равно вынужден будет полностью загрузить весь html-контент данного сайта. Причём, если часть внутренних ссылок формируется динамически, с помощью JavaScript, как я понимаю, они не попадут в этот список. Другое дело, если на сайте много крупных файлов не-html типа. Тогда на них ты сможешь поностью съэкономить. Однако, не проще ли загрузить весь сайт там, где интернет бесплатный, не заморачиваясь формированием списков?
P.S. Кстати, а что за сайт-то?

Всего записей: 1833 | Зарегистр. 22-03-2003 | Отправлено: 22:37 25-11-2007
flymster

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

Цитата:
Надеешься съэкономить траффик?

Вовсе нет, трафик можно сказать не волнует, но просто на диске квота, посему хотелось бы кусками сайт повыкачивать: сегодня 200 файлов скачал, записал на флешь, унёс, удалил уже скачанные ссылки из url-списка. Завтра, послезавтра, и т.д., пока весь сайт не выкачаю.
Поэтому нужен рецепт для формирования вгетом всего списка файлов с сервера. Пробовал экспериментировать с --spider, пишет на любую запрошенную страницу: not found. Версия wget'а - 10.1.2b.
 

Цитата:
P.S. Кстати, а что за сайт-то?

Сайт exponenta.ru - куча мелких картинок с формулами и проч.

Всего записей: 5 | Зарегистр. 24-10-2007 | Отправлено: 23:39 25-11-2007 | Исправлено: flymster, 23:41 25-11-2007
popkov

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

Цитата:
хотелось бы кусками сайт повыкачивать: сегодня 200 файлов скачал, записал на флешь, унёс, удалил уже скачанные ссылки из url-списка. Завтра, послезавтра, и т.д., пока весь сайт не выкачаю.  

Да... мучительная задача. Таким образом, по 200 файлов, несколько месяцев, возможно, сайт придётся выкачивать... сучувствую... надеюсь, всё-таки не 200 файлов, а 20 Мб хотя бы?  
Видимо, единственный выход для тебя - использовать опцию --delete-after, и писать в лог весь процесс загрузки. Однако в таком случае, при первоначальном формировании списка, тебе придётся целиком закачать весь сайт вместе с картинками (но места на диске он не займёт, т.к. каждый файл будет удаляться сразу после загрузки). Прерывание процесса загрузки сайта недопустимо! Других вариантов, как я понимаю, нет.
Лог может получиться огромным. Возможно, можно с помощью таких команд, как find, сразу отфильтровывать только URL'ы, чтобы только они писались в лог. Однако подчёркиваю, что для формирвоания списка таким способом тебе в любом случае необходимо будет скачтать весь сайт целиком, вместе с картинками. Допускаю, правда, что, поэкспериментировав с опциями wget, ты как-то сможешь заставит его не грузить картинки, а только писать, что загрузка такого-то URL запрещена. - надо разбираться.
В общем, задача осуществима, но весьма специфическая. Всё зависит от того, выводит ли wget на экран URL'ы, загрузка которых запрещена по  --reject=LIST (я не проверял - проверь сам).
 
Добавлено:
flymster
Ещё попробуй опцию --spider - возможно, этот как раз то, что тебе нужно! (на первой странице темы она уже немного обсждалась - стоило бы почитать, для начала!)

Всего записей: 1833 | Зарегистр. 22-03-2003 | Отправлено: 00:40 26-11-2007
Aeismann



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
flymster
легче каким-нибудь WebZip-ом воспользоваться, он позволяет паузу ставить... А что, флешка такая маленькая? Может, легче просто качать прямо на неё? Или периодически сбрасывать файлы батником.

Всего записей: 174 | Зарегистр. 24-10-2006 | Отправлено: 16:58 26-11-2007
giger2

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Aeismann
немогу разобраться в wget. подскажите кто знает

Всего записей: 40 | Зарегистр. 06-12-2007 | Отправлено: 15:06 08-12-2007
popkov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
giger2
А Версия для печати пробовал? На первой странице опубликован перевод справки. Сиди и разбирайся.

Всего записей: 1833 | Зарегистр. 22-03-2003 | Отправлено: 16:22 08-12-2007
vovney

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
такой вопрос - как в сабже преодолеть стандартный прокси 192.168.0.1 с авторизацией по логину и паролю.

Всего записей: 114 | Зарегистр. 13-12-2007 | Отправлено: 13:47 13-12-2007
Aeismann



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vovney
http_proxy
 
This variable should contain the URL of the proxy for HTTP connections.
You may specify your username and password either through the proxy URL or through the command-line options. Assuming that the company's proxy is located at proxy.company.com at port 8001, a proxy URL location containing authorization data might look like this:  
 
http://hniksic:mypassword@proxy.company.com:8001/
 
Alternatively, you may use the proxy-user and proxy-password options, and the equivalent .wgetrc settings proxy_user and proxy_password to set the proxy username and password.
 
не канают?

Всего записей: 174 | Зарегистр. 24-10-2006 | Отправлено: 14:48 13-12-2007
PREVED



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пытаюсь скачать файл, со страницы веб-интерфейса прокси-сервера в локальной сети
wget --proxy=off http://192.168.1.18:8080/images/title_web.gif
 
Получаю ошибку:
--15:47:33--  http://192.168.1.18:8080/images/title_web.gif
           => `title_web.gif'
Connecting to 192.168.1.18:8080... connected!
HTTP request sent, awaiting response...
15:47:33 ERROR -1: Malformed status line.

 
Что это и как с этим бороться? Wget версии 1.5.3.1 под Windows XP.
 

Всего записей: 1962 | Зарегистр. 10-03-2006 | Отправлено: 15:48 13-12-2007
vovney

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Aeismann пишу в параметрах http_proxy=http://login:password@192.168.0.1:3128 и дальше адрес файла на удаленном фтп.
 
проксю пройти не может - пишет - unsupported scheme
 
 
Добавлено:
строчка вот такого вида не работает...
 
D:\wget>wget http_proxy=http://login:password@192.168.0.1:3128/ ftp://ftp.avp.ru
/updates_zip/av-i386%26ids-daily.zip
 
http_proxy=http://login:password@192.168.0.1:3128/: Unsupported scheme.
 
--11:44:45--  ftp://ftp.avp.ru/updates_zip/av-i386%26ids-daily.zip
           => `av-i386&ids-daily.zip'
Resolving ftp.avp.ru... 213.206.94.83
Connecting to ftp.avp.ru|213.206.94.83|:21... ^C
 
или я что-то не так написал?
 
Добавлено:
так же не работает такая строчка. я уже запутался
 
D:\wget>wget -e http_proxy=192.168.0.1:3128 -Y on --proxy-user=login --proxy-pa
ssword=pass --passive-ftp ftp://ftp.avp.ru/updates_zip/av-i386%26ids-d
aily.zip
--12:42:39--  ftp://ftp.avp.ru/updates_zip/av-i386%26ids-daily.zip
           => `av-i386&ids-daily.zip'
Resolving ftp.avp.ru... 213.206.94.83
Connecting to ftp.avp.ru|213.206.94.83|:21... ^C
 
Добавлено:
прокси на squid если что
 
Добавлено:
с прокси разобрался.
 
еще вопрос - как сделать чтоб не было вот этого :
 
-nd | -no-directories  
Не создавать иерархию каталогов копируя удал©нную структуру. Если этот параметр включ©н, то все файлы будут сохранены в текущем каталоге без расширения им©н (если имя появляется более, чем один раз, то имя файла получит окончание .n, где n есть целое.
 
чтобы при нахождении в локальном каталоге файла с тем же именем прога не дописывала в конце цифру, а просто заменяла файл на только что скачанный без всяких подтверждений.

Всего записей: 114 | Зарегистр. 13-12-2007 | Отправлено: 06:52 14-12-2007 | Исправлено: vovney, 09:59 14-12-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 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178

Компьютерный форум Ru.Board » Компьютеры » Программы » Wget


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru