Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> название ссылок 
:(
    Опции темы
Grig
Дата 10.7.2006, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 809
Регистрация: 29.4.2005
Где: Иркутск

Репутация: нет
Всего: 16



Здравствуйте!
Я тут посмотрел в поиске как выдергивать ссылки из документа:
Код

$p = HTML::LinkExtor -> new(\&callback);
$res = $ua->request($req);
$res -> is_success() ? {$p -> parse($res -> content), print $res -> status_line ."\n"} : print "Error: " . $res -> status_line ."\n";
#$p -> parse($res -> content);
$base = $res -> base;
defined %links ? map {print url($_, $base) -> abs,"\n"} sort (keys %links) : print "No items, sorry...";
sub callback {
    my ($tag, %attr) = @_;
    map {$links{$_}++} values %attr;
}


А как мне выдернуть название ссылок?
Например, на основании такого кода: 
Код

<a href ="rambler.ru">Rambler</a>

 создать такую пару:
rambler.ru
Rambler 


--------------------
        
PM MAIL ICQ   Вверх
rcdimon
Дата 10.7.2006, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

Репутация: 1
Всего: 2



Обычной регуляркой....

есть <a href="http://ya.ru">Яндекс</a>

пишешь че нить типа

Код

my $string = '<a href="http://ya.ru">Яндекс</a>';
if ($string=~ m{<a href\s*?=\s*?".*">(.*)</a.*?>}gim){
 print $1;
}



И все должно работать  smile  
PM MAIL ICQ   Вверх
rcdimon
Дата 11.7.2006, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

Репутация: 1
Всего: 2



Если тебе надо и ссылку и название то так 


Код

my @a;

push @a, '<a href="www.ya.ru">Яндекс</a>';
push @a, '<a href           =                 "www.Rambler.ru">Рамблер</a>';

foreach (@a){
    if ($_ =~ m{<a href\s*?=\s*?"(.*)">(.*)</a.*?>}gm){
        print "Name- $2, URL- $1\n";
    }
}


Добавлено @ 22:34 
Хотя походу регулярку можно облегчить до

<a href\s*=\s*"(.*)">(.*)</a.*> 
PM MAIL ICQ   Вверх
nitr
Дата 11.7.2006, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 12
Всего: 84



раз делал так, то
Код
m{<a\s*?href\s*?=\s*?"(.*?)"\s*?>(.*?)<\s*?/a\s*?>}smgi

используем принцип минимального поиска 


--------------------
PM   Вверх
rcdimon
Дата 12.7.2006, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

Репутация: 1
Всего: 2



а разницы все равно не будет smile

Нафига ты пишешь 

\s*?
???

тут совсем не нужен нежадный поиск...

*?>(.*?)<\s

Как и тут.. 

Где ты видел вложенные ссылки например?

так что нечего тут мудрить

Добавлено @ 17:55 
А вообще автор тему куда-то исчез.. видимо ему это больше не надо  smile  
PM MAIL ICQ   Вверх
nitr
Дата 13.7.2006, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 12
Всего: 84



это по вашим примерам... а так существует как говорится копилка
m/<A[^>]+?HREF\s*=\s*["']?(^'" >]+?)['"]?\s*>/ig 


--------------------
PM   Вверх
Grig
Дата 17.7.2006, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 809
Регистрация: 29.4.2005
Где: Иркутск

Репутация: нет
Всего: 16



Товарищи, сорри, меня тут долго не было...
Столько вариантов..
Постараюсь объяснить, что мне примерно нужно:
Я пишу скрипт
http://autosunrise.ru/cgi-bin/test3.pl
,
который логинится на сайте, заходит на страничку с кучей ссылок.
Проблема в том, что те ссылки, которые мне нужны, свалены в одну строчку.
Я сохраняю содержимое странички в файл 
http://autosunrise.ru/1.txt
И фишка в том, что мне надо выдернуть пару название/ссылка
только в тех ссылках, которые содержат в себе
Код

?p=project/auctmodels&amp;mrk=

То есть остальные как таковые не нужны.
Пока пытаюсь применить все вышеописанные способы, но ничего не получается..
Но может вы подскажите, как из одной строки выдернуть несколько пар название/ссылка?
 


--------------------
        
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0653 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.