1

我是 Mojolicious 的新手,要在 ap 标签中找到带有类模块的链接的标题,例如

<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 和链接文本。请让我摆脱痛苦。

4

2 回答 2

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";
}

有关 and 的快速教程Mojo::UserAgentMojo::DOM请查看Mojocast 第 5 集

于 2015-12-06T20:52:30.087 回答
2

这是使用Mojo::Collection的一种 mojo-y 方式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;
于 2015-12-06T23:49:37.783 回答