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

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

Всего записей: 53 | Зарегистр. 25-09-2006 | Отправлено: 21: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 заставить сохранять с нормальным именем?

Всего записей: 184 | Зарегистр. 20-07-2003 | Отправлено: 19:40 14-11-2007 | Исправлено: evgenych, 19: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.
Не могли бы дать ссылку где скачать. не могу найти.

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



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

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

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

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

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

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



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

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

 
bk99ru

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

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

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



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

Всего записей: 757 | Зарегистр. 12-10-2002 | Отправлено: 00: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
не забываем про  регистр

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Всего записей: 5 | Зарегистр. 24-10-2007 | Отправлено: 22:39 25-11-2007 | Исправлено: flymster, 22: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 - возможно, этот как раз то, что тебе нужно! (на первой странице темы она уже немного обсждалась - стоило бы почитать, для начала!)

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



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

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

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

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

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

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

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

Всего записей: 114 | Зарегистр. 13-12-2007 | Отправлено: 12: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:[email protected]: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 | Отправлено: 13: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.
 

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

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Aeismann пишу в параметрах http_proxy=http://login:[email protected]:3128 и дальше адрес файла на удаленном фтп.
 
проксю пройти не может - пишет - unsupported scheme
 
 
Добавлено:
строчка вот такого вида не работает...
 
D:\wget>wget http_proxy=http://login:[email protected]:3128/ ftp://ftp.avp.ru
/updates_zip/av-i386%26ids-daily.zip
 
http_proxy=http://login:[email protected]: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 | Отправлено: 05:52 14-12-2007 | Исправлено: vovney, 08: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

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

Сохранено: 09.06.2016 19:40:00 (c) xForumSaver