URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9073
[ Назад ]

Исходное сообщение
"Просвоение значений за один прогон"

Отправлено lamik , 19-Мрт-11 08:28 
Как лучше сделать?
Надо скачать с помощью curl или wget страницу и не сохраняя на диск присвоить одной
переменной значение текста после одного слова до другого, а второй - значение из другой части текста не сохраняя на диск и не скачивая два раза.
Например:

</td><td>В 03:00 было -4.5°C, облачность 7-8 баллов, влажность 86%, ветер С, 2 м/с <a href='/archive.php?wmo_id=34003&lang
бла-бла-бла
<td colspan=2 class=d><img src="/img/cd4.gif" title="обл...

Надо: X="-4.5°C, облачность 7-8 баллов, влажность 86%, ветер С, 2 м/с", Y="cd4.gif".


Содержание

Сообщения в этом обсуждении
"Просвоение значений за один прогон"
Отправлено phpcoder , 19-Мрт-11 10:51 
Если при скачивании страницы, результат выводится в stdout (у wget есть ключик -O -), то можно его сохранить в переменной.

"Просвоение значений за один прогон"
Отправлено ACCA , 19-Мрт-11 12:15 
> Как лучше сделать?
> Надо скачать с помощью curl или wget страницу и не сохраняя на
> диск присвоить одной
> переменной значение текста после одного слова до другого, а второй - значение
> из другой части текста не сохраняя на диск и не скачивая
> два раза.

можно действительно с помощью sh+wget+awk/sed, но геморройно:

array=( $(wget -O - .... | awk или sed ...) )

предполагается, что последовательность в $() выдаст два строковых значения в кавычках, потом () растащит их по элементам массива.

Но вообще-то для этого Perl придумали:

use LWP::Simple;

my $url = 'адрес откуда тащить';
my $page= get $url;
die 'Не получилось' unless defined $page;

my ($X, $Y);
$X = $1  if ($page =~ m#<td>\S+\s+\S+\s+\S+\s+(.+)<a href='/archive.php?wmo_id=34003#o);
$Y = $1  if ($page =~ m#<td colspan=2 class=d><img src="/img/([^"]+)" title="#o);