LINUX.ORG.RU

Парзинг вывода wget


0

0

Нужно из скрипта распарзить вывод wget. Скрипт на perl.
Возникло несколько вопросов
1) wget выводит некоторые информационные строки вида
Length: 1024 (1K) [text/html]
Можно ли рассчитывать что они будут одинаковыми во всех версиях вгет на всех платформах?

2) Сообщения об ошибках выводятся по разному 8(
Например если соединение обрывается то
Connecting to lame.lut.fi|157.24.184.129|:80... failed: Connection refused.
И еще возвращает 1.
А если 404 ошибка то
Error 404: Not Found. Но возвращает 0, типа все в порядке.

Можно ли как-нибудь заставитьв се ошибки выводить в одном стиле и желательно чтобы он возвращал какую-то цифру отличную от 0.
Гуглил, маны читал не нашел.

3) Он во время скачивания печатает в пайп строки вида
20352K ................ ................ ................ 2% 408.71 KB/s

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

Если сделать другой режим вывода, то придется отсеивать контрольные символы, чего не очень хочется. Кто-нибудь как-то решил это?

★★★★

Использование wget это жесткое условие? Тем более при использовании perl

На вывод wget расчитывать нельзя!

sdio ★★★★★
()

$ apt-cache search perl curl
libwww-curl-perl - Perl bindings to libcurl

sdio ★★★★★
()
Ответ на: комментарий от sdio

Ну не очень жесткое. Я хотел LWP, но подумал что придется реализовывать половину функционала wget руками. Например опция --mirror, насколько я понимаю если юзать LWP, придется вручную разбирать HTML. Хорошо еще что для фтп каталогов он вернет тот же хтмл.

OxiD ★★★★
() автор топика
Ответ на: комментарий от OxiD

Посмотрю что может curl. Но вроде там тоже много велосипедов делать придется. Или я не прав?

OxiD ★★★★
() автор топика
Ответ на: комментарий от OxiD

ну если ты хотел парсит аутпут вгета, то мож тебе стрельнит в голову парсит и аутпут цурла ;)

Pi ★★★★★
()
Ответ на: комментарий от OxiD

>Я хотел LWP

Я использовал LWP и подобные модули (например URI::URL), но все они закачивали файлы на целый порядок медленнее wget.

xTERM ★★
()
Ответ на: комментарий от xTERM

Еще одно "за" использование wget.. Только вот как его парсить.. А может есть аналог, только с выводом который лучше обрабюатывается из скриптов? curl тож не устроил меня..

OxiD ★★★★
() автор топика
Ответ на: комментарий от Pi

Да все тем же, то что не хочу миррор вручную писать ) Но если ничего лучше не найду, то придется сделать.

OxiD ★★★★
() автор топика
Ответ на: комментарий от OxiD

Вот тебе перловый скрипт

$ apt-cache show mirror

Description: keeps FTP archives up-to-date
 Mirror uses the FTP protocol to locally duplicate remote host files and
 directories selected with Perl regular expressions.  By default transfers
 only files missing locally or whose remote sizes or time-stamps have changed.
 Can reduce directory download using compressed listings in ls-lR.gz files
 or further using compressed differences of daily listings in ls-lR.patch.gz
 files.  Can read mirrored Packages.gz files and mirror just their specified
 fraction of Debian from pool/.  Amongst many flexible options it can gzip
 and split files.  Tracks large distant FTP archives accurately with low
 download volume.

sdio ★★★★★
()
Ответ на: комментарий от OxiD

А зачем тебе его аутпут парсить? В случае миррора того же.

eXOR ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.