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

Perl WWW::Mechanize在六秒钟后执行第二次重定向,perl,redirect,www-mechanize,Perl,Redirect,Www Mechanize,我在模块中使用Perl将表单提交到网页并将结果保存到文件中。我知道如何提交表单和保存数据,但在这六秒钟的重定向之后,我无法保存数据 提交表单后,页面将重定向到显示以下内容的页面 结果应在大约6秒钟后显示在此窗口中。。。 它会再次重定向到我想要的结果页面。我的脚本可以遵循第一个重定向,但不能遵循第二个重定向,并且没有类似“如果没有重定向,请单击此处”的链接 这是我的剧本 使用WWW::Mechanize; 我的$mech=WWW::Mechanize->new(自动检查=>1); $mech->

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

提交表单后,页面将重定向到显示以下内容的页面

结果应在大约6秒钟后显示在此窗口中。。。
它会再次重定向到我想要的结果页面。我的脚本可以遵循第一个重定向,但不能遵循第二个重定向,并且没有类似“如果没有重定向,请单击此处”的链接

这是我的剧本

使用WWW::Mechanize;
我的$mech=WWW::Mechanize->new(自动检查=>1);
$mech->get(“http://tempest.wellesley.edu/~btjaden/TargetRNA2/index.html”);
$result=$mech->提交表格(
表格编号=>1,
字段=>{
text=>“大肠杆菌str.K-12 substr.MG1655”,
序列=>'>RyhB'.“\n”。
“GCGATCAGAGAGAGAGAGAGAGAGAGAGCCTGAAGCACGATCATTCATGCTTCCAGTTATTACTAGCCAGCGTGCTGGCTTTT”,
}    
);
$mech->保存内容(结果);

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

试试这个:

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);
WWW::机械化和元刷新 “6秒”是否包含下面一行中的内容?[您可以使用WWW::Machenize的
save_content
方法将页面保存到文件]

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

是=>

看一看数据的来源。
它显示了WWW::Mechanize的后续操作方式。

这很可能解决你的问题

您在如此混乱的情况下展示代码并寻求帮助是不礼貌的。它不会伤害你适当缩进它,这样它至少是可读的。从目前的情况来看,这是一片混乱。Wellesley学院网站似乎不喜欢RNA序列字段中的序列ID
>RyhB
。如果您发布了您遇到问题的实际代码,这会有所帮助。这相当于一个只提供链接的答案。可能希望将这些链接中的一些详细信息添加到您的帖子中。如果不知道页面使用的是哪种“延迟重定向”方法,那么这是不划算的。例如,我看到过仅基于javascript的重定向,请始终在每个Perl程序开始时使用严格的
使用警告
。使用
my
声明变量而不使用
use strict
是毫无意义的。