2015-12-06 84 views
0

我是Mojolicious的新手,在類Module Module中找到p標記內鏈接的標題。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::UserAgentMojo::DOM的快速教程,請Mojocast episode 5

+0

完美,謝謝你的例子和mojocast鏈接 –

2

下面是使用Mojo::Collectionmap做它的魔力-Y方式:

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;