我正在使用 find_link_dom 并且它正在工作......找到匹配的第一个链接。我需要找到第二个。这是我的台词:
my $link = $mech->find_link_dom ( text_regex => 'abc' );
这个命令有没有办法返回匹配的第二个链接?
在有人评论我需要更改搜索条件之前,文本是相同的。唯一不同的是网址,我不知道应该选择的网址。我需要与上述搜索匹配的第二个链接。
我正在使用 find_link_dom 并且它正在工作......找到匹配的第一个链接。我需要找到第二个。这是我的台词:
my $link = $mech->find_link_dom ( text_regex => 'abc' );
这个命令有没有办法返回匹配的第二个链接?
在有人评论我需要更改搜索条件之前,文本是相同的。唯一不同的是网址,我不知道应该选择的网址。我需要与上述搜索匹配的第二个链接。
文档说它返回objects。那是复数。还有这段代码。注意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 );
还有第二种方法,来自@simbabque 文档参考,我认为你应该尝试:
$mech->find_all_links_dom %options
print $_->{innerHTML} . "\n"
for $mech->find_all_links_dom( text_regex => qr/google/i );
在文档中查找所有匹配的链接 DOM 节点。这些选项记录在 ->find_link_dom 中。
根据上下文将它们作为列表或数组引用返回。
这默认不查看子框架。