- 论坛徽章:
- 1
|
本帖最后由 seufy88 于 2014-05-20 15:59 编辑
我想作用mojo,对 192.168.1.1/issue/1到 192.168.1.1/issue/100进行GET,对每个GET到的网页内容,找出
ahref为 /attachment/download/这样的链接地址。
但是运行脚本后,每次print的都是第1个网页地址的中/attachment/downlaod的结果
这是为何- #!/usr/bin/perl
- use strict;
- use Mojo::UserAgent;
- use Data::Dumper;
-
-
- my $username='xxxxx';
- my $password='xxxxx';
- my $baseUrl = Mojo::URL->new('http://192.168.1.1/issues/');
- my $ua = Mojo::UserAgent->new(max_redirects => 3);
- #call back
- my $callback = sub {
- my ($ua, $tx) = @_;
- return if !$tx->success;
-
- # ticket Number
- my $ticket = $tx->req->headers->header('ticket');
- print "==== Callback ======\n";
- print "$ticket\n";
-
- #ticket Title
- my $title = $tx->res->dom->html->head->title->text;
- #print "=== Title: $title\n";
-
- my $array = $tx->res->dom->find("a[href]")->attr('href');
-
- my @arr;
- @arr = (map { if (m#attachments/download#) { 'http://192.168.1.1'.$_."\n";$_} } @$array);
- print @arr;
-
- #$ua->get($newUrl)->res->content->asset->move_to($filename);
- };
- ##*******************************************/
- my $redmine_login = 'http://192.168.1.1/login';
- my $login = 'http://192.168.1.1/my/page';
- my $ticket_start = 1;
- my $ticket_end = 100;
- my $token;
- $ua->get($redmine_login)->res->dom->find("input")->each(sub{
- my $attrs = shift->attr;
- if($attrs->{name} eq 'authenticity_token'){
- $token = $attrs->{value};
- }
- });
- if($token){
- my $tx = $ua->post("$redmine_login"=> form => {
- 'username' => "$username",
- 'password' => "$password",
- 'login' =>'Login »',
- 'utf8' =>'✓',
- 'authenticity_token' =>"$token",});
-
- #登录成功,对 1~100的网页进行get
- if (my $res = $tx->success){
-
- foreach my $ticket ($ticket_start..$ticket_end){
- $baseUrl->path("$ticket");
- if (!$baseUrl->scheme){$baseUrl->scheme('http');}
-
- $ua->get($baseUrl => { ticket => $ticket} => $callback);
- print "==== get URL ======\n";
- print "$baseUrl\n";
- }
-
- Mojo::IOLoop->start;
- }else{
- print " login failed\n";
- }
- }else{
- print " token failed\n";
- }
复制代码 |
|