我是Mojolicious的新手,要找到带有类Module的p标签内链接的标题,例如
<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和链接文本。请把我从痛苦中解脱出来。
答案 0 :(得分:4)
您只需要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
答案 1 :(得分:2)
使用Mojo::Collection&#39; 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;