Добрый день, столкнулся с проблемой в Perl, я пытаюсь довести до ума скрипт, работы с html страницами. Мучаюсь который день, по непонятным мне причинам выводятся элементы и заносяться в "&page=$i" в хаотичном порядке, 2,7,4,1,10,22 итд, а надо что бы каждый элемент выводился по порядку Прошу подтолкнуть в верном направление, помочь довести до ума скрипт. Очень прошу не пинать, я пытаюсь изучать perl.
| Код | #!/usr/bin/perl $|=1; use strict; use warnings; use LWP::UserAgent; #use HTTP::Cookies; use Fcntl; use threads; use threads::shared; my $tn = 10; #количество потоков my $sl = 30; #количество страниц my $ua = LWP::UserAgent->new; $ua -> timeout(10); my @trl; my $req; my $mth = "POST"; #GET/POST my $url = "http://url"; my $cnt ="tegi'(.+?)'";
my $i = 0; while ($i<=$sl) { { for (0..$tn) {
$trl[$_] = threads -> create(\&scan,$i++); #$i++; #print "===========================potok:", "$_", "================================", "\n"; } $_->join for @trl;
# for (@trl) { # $_ -> join(); #}
sub scan {
my $num = shift;
$ua -> agent($agents[rand($#agents)]);
$req = HTTP::Request->new($mth => $url); $req -> header('Accept' => 'text/html');
$req -> header('Content-Type' => 'application/x-www-form-urlencoded'); my $pst = "page=$i"; #если пост $req->content($pst);
#$Cookie -> add_cookie_header($req);
my $res = $ua->request($req);
#print $i, ":",$num, "\n"; $res->content=~/$cnt/; sysopen(FH, "text.txt", O_WRONLY|O_CREAT|O_APPEND);
#print $i,"\n"; if ($num == $sl) { print "[~] Success ...Exit....\n"; close FH; exit(); } if ($1) {
print $i, ":", "1 takt:", $num, $1, "\n"; print(FH $i, ":", $1, "\n"); if ($num == $sl) { print "[~] Success ...Exit....\n"; close FH; exit(); } return 0; } else { for (0..30) {
$ua -> agent($agents[rand($#agents)]); my $req = HTTP::Request -> new($mth => $url); $req -> header('Accept' => 'text/html'); $req -> header('Content-Type' => 'application/x-www-form-urlencoded'); $req->content($pst); #$Cookie -> add_cookie_header($req); my $res = $ua -> request($req); $res -> content =~/$cnt/; if ($1) { print $i, ":", "2 takt:", $1, "\n"; print(FH $i, ":", $1, "\n"); return 0; }
return 0; } } if ($num == $sl) { print "[~] Success ...Exit....\n"; close FH; exit(); } close FH;
}
}
|
Большое человеческое спасибо.
|