2015-12-06 2 views
0

Я новичок в Mojolicious, чтобы найти заголовок для ссылки в теге p с классом Module, например.Mojo :: DOM - Как вернуть более одного атрибута

<p class="Module"><a class="story" href="http://intranet/blah" >Link Text is here</a></p> 

Я использую следующий код:

my $dom = Mojo::DOM->new($page); 

for my $elm ($dom->find('p.Module > a.story')->each){ 
    print $elm->text ."\n"; 
} 

Довольно сырой, но функциональный. То, что я пока не могу понять (для меня может быть слишком поздно), как вернуть href и текст ссылки. Пожалуйста, уберите меня из моих страданий.

+1

* «Довольно сырой, но функциональный» * Мне кажется, все хорошо – Borodin

ответ

3

Вам просто нужно attr метод:

my $dom = Mojo::DOM->new($page); 

for my $elm ($dom->find('p.Module > a.story')->each){ 
    print $elm->text, ' ', $elm->attr('href'), "\n"; 
} 

Для быстрого учебник по Mojo::UserAgent и Mojo::DOM, проверить Mojocast episode 5

+0

Отлично, спасибо за пример и ссылку mojocast –

2

Вот мохо-й способ сделать это с помощью Mojo::Collection «s map:

use v5.10; 

use Mojo::DOM; 
use Data::Dumper; 

my $page =<<'HTML'; 
<p class="Module"><a class="story" href="http://intranet/blah" >Link Text is here</a></p> 
HTML 

my $dom = Mojo::DOM->new($page); 

my @links = $dom 
    ->find('p.Module > a.story') 
    ->map(sub { [ $_->text, $_->attr('href') ] }); 

say Dumper \@links; 
Смежные вопросы