Perl Пока l oop Http и HTTPS ответы - PullRequest
0 голосов
/ 18 января 2020
$resp = $ab->request(HTTP::Request->new(GET => $url));
$rrs = $resp->content;



while(($rrs =~ m/<a href=\"https?:\/\/(.*?)\//g)  &&  ($rrs =~ m/<a href=\"?http:\/\/(.*?)\//g)){

1 Ответ

3 голосов
/ 18 января 2020

Ваш пример обрывается, но похоже, что вы хотите извлечь ресурс, извлечь ссылки и, возможно, сделать что-то другое. Я предлагаю, чтобы вы позволили Mojolicious сделать это для вас. Он может извлечь ресурс, проанализировать HTML (dom), извлечь другие ссылки (в map) и выбрать те, которые имеют правильную схему (сначала grep):

use v5.10;

use Mojo::UserAgent;

my $ua = Mojo::UserAgent->new;

my @queue = ( $ARGV[0] );

my %Seen; # don't process things we've already seen
while( my $this = shift @queue ) {
    say "Processing $this";

    my $tx = $ua->get( $this );

    my @links = $tx->result
        ->dom
        ->find( 'a' )
        ->map( attr => 'href' )
        ->grep( sub { Mojo::URL->new($_)->scheme =~ /https?/ } )
        ->grep( sub { ! $Seen{$_} } )
        ->each;

    say "\t", join "\n\t", @links;

    push @queue, @links;
    }

Я пишу обо всем этом с множеством примеров в Mojolicious Web Clients .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...