WWW :: Mechanize在六秒钟后进行第二次重定向

时间:2015-02-13 21:23:24

标签: perl redirect www-mechanize

我使用Perl和WWW::Mechanize模块将表单提交到网页并将结果保存到文件中。我知道如何提交表单并保存数据,但是在这六秒重定向后我无法保存数据。

提交表单后,页面将重定向到显示

的页面
Results should appear in this window in approximately 6 seconds...

并将其重定向到具有我想要的结果的页面。我的脚本可以遵循第一个重定向,但不是第二个重定向,并且没有链接说明"如果没有重定向,请点击此处"

这是我的剧本

use WWW::Mechanize;

my $mech = WWW::Mechanize->new(autocheck => 1);

$mech->get( "http://tempest.wellesley.edu/~btjaden/TargetRNA2/index.html");

$result = $mech->submit_form(
    form_number =>  1,
    fields      =>  {
        text    => 'Escherichia coli str. K-12 substr. MG1655',
        sequence    => '>RyhB' . "\n" .
                        'GCGATCAGGAAGACCCTCGCGGAGAACCTGAAAGCACGACATTGCTCACATTGCTTCCAGTATTACTTAGCCAGCCGGGTGCTGGCTTTT',
    }    
);
$mech->save_content(result);

2 个答案:

答案 0 :(得分:3)

您需要做的是提取重定向网址并手动运行:

试试这个:

use WWW::Mechanize;

my $mech = WWW::Mechanize->new( autocheck => 1 );

$mech->get( "http://tempest.wellesley.edu/~btjaden/TargetRNA2/index.html");

$result = $mech->submit_form(
    form_number => 1, 
    fields      => 
    {
        text        => 'Escherichia coli str. K-12 substr. MG1655', 
        sequence    => '>RyhB GCGATCAGGAAGACCCTCGCGGAGAACCTGAAAGCACGACATTGCTCACATTGCTTCCAGTATTACTTAGCCAGCCGGGTGCTGGCTTTT',
    }
);

my $content =  $mech->content;
my $url1 = 'http://tempest.wellesley.edu/~btjaden/cgi-bin/';
my ($url2) = $content =~ /URL=(targetRNA2\.cgi?.+)?">/;

$mech->get($url1.$url2);

$mech->save_content(result);

答案 1 :(得分:0)

WWW :: Mechanize和meta refresh

" 6秒"包含下面一行的内容? [您可以使用WWW :: Machenize的save_content方法将页面保存到文件中]

<meta http-equiv="refresh" content="5; url=http://example.com/">

YES =&GT;

查看WWW::Mechanize::Plugin::FollowMetaRedirect的来源 它显示了WWW :: Mechanize如何遵循meta refresh with redirect 它可能很有可能解决您的问题。