如何在Perl中使用WWW :: Mechanize :: Firefox和find_link_dom找到第二个链接出现?

时间:2016-04-06 12:38:59

标签: regex perl mechanize www-mechanize-firefox

我正在使用find_link_dom并且它正在工作......找到匹配的第一个链接。我需要找到第二个。这是我的专栏:

my $link = $mech->find_link_dom ( text_regex => 'abc' );

这个命令有没有办法返回匹配的第二个链接?

在有人发表评论说我需要更改搜索条件之前,文字是一样的。唯一不同的是网址,我不知道应该从网址中选择哪个网址。我需要与上述搜索匹配的第二个链接。

2 个答案:

答案 0 :(得分:2)

documentation表示它返回对象。那是复数。还有这段代码。请注意for

print $_->{innerHTML} . "\n"
    for $mech->find_link_dom( text_contains => 'CPAN' );

所以你可以在列表上下文中调用它来获取所有找到的链接,或者只是选择你想要的链接。

( undef, my $link ) = $mech->find_link_dom ( text_regex => 'abc' );

那应该给你第二个。

或者,抓住所有这些并输出,看看发生了什么。

use Data::Printer;

my @links = $mech->find_link_dom ( text_regex => 'abc' );
p @links

或者,您可以使用n选项,这是一个基于 1的索引

my $second_link = $mech->find_link_dom( text_regex => 'abc', n => 2 );

答案 1 :(得分:1)

来自@simbabque文档参考的second method,我认为您应该尝试:

 $mech->find_all_links_dom %options

 print $_->{innerHTML} . "\n"
     for $mech->find_all_links_dom( text_regex => qr/google/i );
  

在文档中查找所有匹配的linky DOM节点。选项记录在 - > find_link_dom。

中      

将它们作为列表或数组引用返回,具体取决于上下文。

     

此默认设置不会查看子框架。