Вы можете сделать большую часть этого прямо в конвейере Mojo :: Collections . Есть даже метод size
, который скажет вам, сколько элементов находится в коллекции, без вашего подсчета :. Команда grep
удаляет странные теги a
на этой странице, map
может делать то, что вам нравится, и после этого size
возвращает вам результат. У меня много примеров в Веб-клиенты Mojo :
#!/usr/bin/env perl
use v5.10;
use open qw(:std :utf8);
use warnings;
use strict;
use Mojo::UserAgent;
use Mojo::Util qw(trim);
my $url = 'https://www.tripadvisor.com/Restaurants-g147275-Varadero_Matanzas_Province_Cuba.html';
my $ua = Mojo::UserAgent->new;
my $count = $ua->get( $url )
->res
->dom
->find( 'a[href]' )
->grep( sub { $_->attr('href') =~ m|\A/RestaurantsNear-| } )
->map( sub {
my $t = trim( $_->all_text );
printf qq(%s -> "%s"\n), $_->attr("href"), $t;
})
->size;
say "Total is $count";