我正在使用find_link_dom并且它正在工作......找到匹配的第一个链接。我需要找到第二个。这是我的专栏:
my $link = $mech->find_link_dom ( text_regex => 'abc' );
这个命令有没有办法返回匹配的第二个链接?
在有人发表评论说我需要更改搜索条件之前,文字是一样的。唯一不同的是网址,我不知道应该从网址中选择哪个网址。我需要与上述搜索匹配的第二个链接。
答案 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。
中将它们作为列表或数组引用返回,具体取决于上下文。
此默认设置不会查看子框架。