Ru-Board.club
← Вернуться в раздел «Программы»

» Wget

Автор: popkov
Дата сообщения: 25.11.2007 21:37
flymster
Надеешься съэкономить траффик? Для формирования такого списка wget всё равно вынужден будет полностью загрузить весь html-контент данного сайта. Причём, если часть внутренних ссылок формируется динамически, с помощью JavaScript, как я понимаю, они не попадут в этот список. Другое дело, если на сайте много крупных файлов не-html типа. Тогда на них ты сможешь поностью съэкономить. Однако, не проще ли загрузить весь сайт там, где интернет бесплатный, не заморачиваясь формированием списков?
P.S. Кстати, а что за сайт-то?
Автор: flymster
Дата сообщения: 25.11.2007 22:39
popkov

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

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


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

Сайт exponenta.ru - куча мелких картинок с формулами и проч.
Автор: popkov
Дата сообщения: 25.11.2007 23:40

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

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

Добавлено:
flymster
Ещё попробуй опцию --spider - возможно, этот как раз то, что тебе нужно! (на первой странице темы она уже немного обсждалась - стоило бы почитать, для начала!)
Автор: Aeismann
Дата сообщения: 26.11.2007 15:58
flymster
легче каким-нибудь WebZip-ом воспользоваться, он позволяет паузу ставить... А что, флешка такая маленькая? Может, легче просто качать прямо на неё? Или периодически сбрасывать файлы батником.
Автор: giger2
Дата сообщения: 08.12.2007 14:06
Aeismann
немогу разобраться в wget. подскажите кто знает
Автор: popkov
Дата сообщения: 08.12.2007 15:22
giger2
А Версия для печати пробовал? На первой странице опубликован перевод справки. Сиди и разбирайся.
Автор: vovney
Дата сообщения: 13.12.2007 12:47
такой вопрос - как в сабже преодолеть стандартный прокси 192.168.0.1 с авторизацией по логину и паролю.
Автор: Aeismann
Дата сообщения: 13.12.2007 13:48
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.

не канают?
Автор: PREVED
Дата сообщения: 13.12.2007 14:48
Пытаюсь скачать файл, со страницы веб-интерфейса прокси-сервера в локальной сети
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.

Автор: vovney
Дата сообщения: 14.12.2007 05:52
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 есть целое.

чтобы при нахождении в локальном каталоге файла с тем же именем прога не дописывала в конце цифру, а просто заменяла файл на только что скачанный без всяких подтверждений.
Автор: Aeismann
Дата сообщения: 14.12.2007 12:45

Цитата:
чтобы при нахождении в локальном каталоге файла с тем же именем прога не дописывала в конце цифру, а просто заменяла файл на только что скачанный без всяких подтверждений.

Мда, меня тоже это интересует. Сколько ни бился, вгет либо не скачивает имеющиеся файлы, либо переименовывает. Правда, ситуация у меня немного другая - я хочу, чтобы качались все файлы, независимо от того, что уже есть на локальном диске. Неужели это только правкой исходников можно сделать?
Автор: popkov
Дата сообщения: 14.12.2007 17:23

Цитата:
чтобы при нахождении в локальном каталоге файла с тем же именем прога не дописывала в конце цифру, а просто заменяла файл на только что скачанный без всяких подтверждений.

А ты читал перевод справки на первой странице темы? Переводил давно, но мне кажется, что такая возможность есть - какая-то из опций (по-моему, --no-clobber).

Добавлено:

Цитата:
Правда, ситуация у меня немного другая - я хочу, чтобы качались все файлы, независимо от того, что уже есть на локальном диске. Неужели это только правкой исходников можно сделать?

Почему бы тогда просто не удалить все файлы с диска?
Автор: 12341234
Дата сообщения: 15.12.2007 06:44
Прошу помощи у гуру, сам не могу понять как сделать.
Нужно скачать ссылки по шаблону

http://site.ru/catalog/?file=N

где N число от 1 до 1000

Т.е. не генерить эти ссылки в файл а потом оттуда их подгружать, а задать сразу в командной строке командой, чтобы wget пошел и стал их последовательно брать

http://site.ru/catalog/?file=1
http://site.ru/catalog/?file=2
http://site.ru/catalog/?file=3
..............
http://site.ru/catalog/?file=1000

а потом остановился.
Как это можно реализовать? Спасибо
Автор: 01MDM
Дата сообщения: 15.12.2007 08:42
12341234

Код:
for /l %%i in (1,1,1000) do wget http://site.ru/catalog/?file=%%i
Автор: 12341234
Дата сообщения: 15.12.2007 13:22
У меня ошибку синтаксиса выдает, если это из командной строки вызывать, нужно по другому вызвать?
Автор: 01MDM
Дата сообщения: 15.12.2007 14:17
12341234
Если просто из ком. строки, то вместо %%i используй %i (с одним знаком процента). Если из батника то %%i будет верно.

Код:
Из комстроки
for /l %i in (1,1,1000) do wget http://site.ru/catalog/?file=%i

Из батника
for /l %%i in (1,1,1000) do wget http://site.ru/catalog/?file=%%i
Автор: 12341234
Дата сообщения: 15.12.2007 17:31
01MDM
Спасибо огромное!. Все работает в windows. А в *nix как такое же проделать? В командной строке?
Автор: Alex_Dragon
Дата сообщения: 15.12.2007 18:35
wget по идее позволяет загрузку файлов с использованием шаблонов (wildcards), читаем хелп, раздел Types of Files:
When downloading material from the web, you will often want to restrict the retrieval to only certain file types. For example, if you are interested in downloading GIFs, you will not be overjoyed to get loads of PostScript documents, and vice versa.

Wget offers two options to deal with this problem. Each option description lists a short name, a long name, and the equivalent command in .wgetrc.
-A acclist
--accept acclist
accept = acclist
The argument to --accept option is a list of file suffixes or patterns that Wget will download during recursive retrieval. A suffix is the ending part of a file, and consists of "normal" letters, e.g. gif or .jpg. A matching pattern contains shell-like wildcards, e.g. books* or zelazny*196[0-9]*.

So, specifying wget -A gif,jpg will make Wget download only the files ending with gif or jpg, i.e. GIFs and JPEGs. On the other hand, wget -A "zelazny*196[0-9]*" will download only files beginning with zelazny and containing numbers from 1960 to 1969 anywhere within. Look up the manual of your shell for a description of how pattern matching works.

Of course, any number of suffixes and patterns can be combined into a comma-separated list, and given as an argument to -A.
-R rejlist
--reject rejlist
reject = rejlist
The --reject option works the same way as --accept, only its logic is the reverse; Wget will download all files except the ones matching the suffixes (or patterns) in the list.

So, if you want to download a whole page except for the cumbersome MPEGs and .AU files, you can use wget -R mpg,mpeg,au. Analogously, to download all files except the ones beginning with bjork, use wget -R "bjork*". The quotes are to prevent expansion by the shell.

The -A and -R options may be combined to achieve even better fine-tuning of which files to retrieve. E.g. wget -A "*zelazny*" -R .ps will download all the files having zelazny as a part of their name, but not the PostScript files.

Note that these two options do not affect the downloading of HTML files; Wget must load all the HTMLs to know where to go at all--recursive retrieval would make no sense otherwise.
Автор: Aeismann
Дата сообщения: 16.12.2007 20:36
popkov

Цитата:
А ты читал перевод справки на первой странице темы? Переводил давно, но мне кажется, что такая возможность есть - какая-то из опций (по-моему, --no-clobber).

Я читал исходный мануал, но всё равно не нашел, как решить проблему. --no-clobber работает только с новыми файлами.

Цитата:
Почему бы тогда просто не удалить все файлы с диска?

Дело в том, что мне надо получить список файлов в директории, для этого запусскаю вгет как паука (spider). Но даже в этом режиме он не рассматривает те файлы, которые уже есть на диске. Можно, конечно, отправлять его в левую папку... тоже мысль, но хотелось бы без этих ухищрений.
Автор: popkov
Дата сообщения: 17.12.2007 02:35
Aeismann

Цитата:
Дело в том, что мне надо получить список файлов в директории

Тогда и используй опцию --spider! Ничего не будет сохраняться на диске, но в логе будут адреса всех файлов, имеющихся на сервере!
P.S. А какую цель ты в конечном счёте преследуешь?
Автор: vovney
Дата сообщения: 17.12.2007 08:18
еще вопрос. надо выкачать все это ftp://ftp.avp.ru/bases/ на локальный диск, а потом зеркалировать с некоторой периодичностью.

батник такого вида, и со всеми вариациями дает только один результат - в папку на локальном диске сохраняется файл index.html, отображающий как раз, что лежит на ftp://ftp.avp.ru/bases/

ничего не понимаю... (в файле list2.html как раз стоит адрес ftp://ftp.avp.ru/bases/)

D:\wget\wget.exe --proxy-user=user --proxy-password=pass --passive-ftp -i list2.html -nd -P D:\avp_test\bases

Добавлено:
вот такое пишет

Proxy request sent, awaiting response... 200 OK
Length: 3а252 (3.2K) [text/html]
Last-modified header missing -- time-stamps turned off.
--12:24:00-- ftp://ftp.avp.ru/bases/
=> `D:/avp_test/bases/index.html'
Connecting to 192.168.0.1:3128... connected.
Proxy request sent, awaiting response... 200 OK
Length: 3а252 (3.2K) [text/html]

100%[====================================>] 3а252 --.--K/s

12:24:00 (116.86 MB/s) - `D:/avp_test/bases/index.html' saved [3252/3252]


FINISHED --12:24:00--
Downloaded: 3а252 bytes in 1 files

помогите плз

Добавлено:
D:\wget\wget.exe --proxy-user=user --proxy-password=pass --passive-ftp -m ftp://ftp.avp.ru/bases/ -PD:\avp_test\bases

такой батник дает тот же резалт. что я делаю не так?

Добавлено:
вот эта фраза настораживает : Last-modified header missing -- time-stamps turned off.

то есть на фтп у касперского отрублена возможность узнавать по запросу даты изменения файлов?

Добавлено:
или блин всё дело в сквиде?

Добавлено:
короче резюмирую. при попытке скачать любые ФАЙЛЫ или списки файлов по ссылкам, все работает. и зеркалируется. но как только пытаюсь выкачать именно каталоги вида ftp://ftp.avp.ru/bases/ закачивает только index.html и все. а при ключе -m выводит вот это : Last-modified header missing -- time-stamps turned off.

чо делать?
Автор: Aeismann
Дата сообщения: 17.12.2007 09:42
popkov

Цитата:
Тогда и используй опцию --spider! Ничего не будет сохраняться на диске, но в логе будут адреса всех файлов, имеющихся на сервере!

Я так и делаю, и если закачка "новая", то всё отлично. Но если некоторые файлы уже существуют, то вгет не пишет их в лог даже в режиме спайдера.
Цель у меня такая: закачивать вгетом файлы с фтп, а потом проверять, все ли закачаны (для этого и нужен список), а также нет ли битых (это зипы). Пока сделал в два прохода - один спайдером, для получения списка файлов, и один закачивающий.

vovney, была такая байда. Именно при закачке с фтп. Похоже, что глюк в части взаимодействия вгета с HTTP-proxy, мне из-за этого пришлось перетаскивать его под socks5 через FreeCap. Иначе никак не получалось.
P.S. Если попробуешь качнуть напрямую, уверен, что всё будет ОК.
Автор: vovney
Дата сообщения: 17.12.2007 09:59
Aeismann
дык напрямую это понятно, но там список файлов можно задолбаться составлять... ладно, будем думать.

интересно - а просто родная команда ftp умеет корректно зеркалировать через сквид-прокси? кто пробовал?
Автор: Asmix
Дата сообщения: 17.12.2007 11:32
vovney

попробуй так:

D:\wget\wget.exe --proxy-user=user --proxy-password=pass --passive-ftp -m ftp://ftp.avp.ru/bases -PD:\avp_test\bases

или если не хочешь чтобы в D:\avp_test\bases создавалась ftp.avp.ru\bases:

D:\wget\wget.exe --proxy-user=user --proxy-password=pass --passive-ftp -m -nd ftp://ftp.avp.ru/bases -PD:\avp_test\bases
Автор: vovney
Дата сообщения: 17.12.2007 12:13
Asmix не, через проксю вообще не хочет работать. а тестово локальный фтп нормально зеркалирует...
Автор: vovney
Дата сообщения: 19.12.2007 04:57
народ, ну что - никто не зеркалил удаленный фтп через прокси squid? второй день бьюсь - все так же выдает только index.html
Автор: Cheery
Дата сообщения: 19.12.2007 05:00
vovney

Цитата:
второй день бьюсь - все так же выдает только index.html

да потому что используется http протокол на момент работы с проксей, по видимому.
вот и генерится список файлов в html, который wget парсить не умеет.
так мне кажется
Автор: vovney
Дата сообщения: 19.12.2007 06:27
Cheery и что теперь делать? использовать другое ПО? тогда посоветуйте какое именно?
Автор: Aeismann
Дата сообщения: 19.12.2007 09:41

Цитата:
вот и генерится список файлов в html, который wget парсить не умеет.
так мне кажется

Можно попробовать сначала скачивать хтмл, а его уже потом парсить принудительно... не помню, пробовал ли я в своё время этот путь и есть ли там какие-то подводные камни.
vovney
Кроме как направлять вгет через сокс5 посредством FreeCap, я не нашёл выхода...
Автор: mithridat1
Дата сообщения: 19.12.2007 09:50
Aeismann

Цитата:
Кроме как направлять вгет через сокс5 посредством FreeCap, я не нашёл выхода...


Как вариант можно найти http-proxy с поддержкой форвардинга на socks-proxy
Мне известен только один - Privoxy,правда,ftp он не поддерживает.
В общем,это скорее общее замечание по поводу соксификации wget.

Страницы: 12345678910111213141516

Предыдущая тема: Windows XP FAQ = обновлен 19 мая =


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.